MySQL集锦

安装

yum install -y mysql-server mysql mysql-devel
/etc/init.d/mysqld start
/usr/bin/mysqladmin -u root password 'new-password'  // 为root账号设置密码


linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;
用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;

1、MySQL授权其他机器访问
mysql -uroot -p123 test #root用户登录test数据库



use mysql;
SELECT DATABASE(); #查看当前数据库
grant all on *.* to username@192.168.1.108 identified by "password";
查看授权表
select user,host,password from mysql.user;
show grants for jzk@192.168.1.108;#查看jzk用户对192.168.1.108的授权情况


2、用192.168.1.108访问106的mysql
mysql -ujzk -p1 -h192.168.1.106

ERROR 2003 (HY000): Can't connect to MySQL server on 192.168.1.106
解决:

#关闭防火墙
service iptables stop
chkconfig iptables off
sudo vim /etc/mysql/my.conf
#bind-address = 127.0.0.1 <---注释掉这一行就可以远程登录了


3、开启、操作logbin日志

show variables like "%bin%"; #查看binlog是否开启
sudo vim /etc/mysql/my.cnf
log_bin = /var/log/mysql/mysql-bin #修改log_bin
#log_bin = /var/lib/mysql/mysql-bin

show master status;#查看最后一个bin日志
flush logs;#此时会多一个新的bin日志
reset master;#清空所有bin日志


操作

#/usr/bin/mysqlbinlog --no-defaults mysql-00000.bin;
/usr/bin/mysqlbinlog /var/log/mysql/mysql-bin.000001 #查看日志文件



insert into t values(1);
insert into t values(2);
flush logs;#产生一个新的bin日志
truncate t;


使用mysql-bin.000001恢复数据

[img]http://dl2.iteye.com/upload/attachment/0100/8996/ef5a3675-68aa-3cce-acb3-f61fea2aea89.jpg[/img]


/usr/bin/mysqlbinlog /var/log/mysql/mysql-bin.000001 --start-position="1152" --stop-position="1270" | mysql -uroot -p1 test
/usr/bin/mysqlbinlog /var/log/mysql/mysql-bin.000001 | more #查看日志信息
/usr/bin/mysqlbinlog后面可以增加如下参数
--start-position="50"
--stop-position="50"
--start-date="2012-01-04 21:09:35"
--stop-date="2012-01-04 21:39:14"


备份数据

/usr/bin/mysqldump -uroot -p1 test -l -F > /tmp/test.sql
#-l -F读锁刷新、备份数据之后刷新日志
#可以测试dump的时候有多份binlog日志的情况
insert into t values(3);
insert into t values(4);
insert into t values(5);
flush logs;
truncate t;
drop table t;

#恢复数据
mysql -uroot -p1 test < /tmp/test.sql
#mysql -uroot -p1 test -v -f< /tmp/test.sql
-v 查看导入的详细信息,一般不需要
-f当中间遇到错误,可以skip过去,继续执行下面的语句
/usr/bin/mysqlbinlog /var/log/mysql/mysql-bin.000001 | mysql -uroot -p1



4、主从复制

#sudo scp /tmp/test.sql 192.168.1.108:/tmp/
修改主服务器配置文件
binlog-do-d=test#需要同步的数据库名,如果有多个数据库,可重复此参数,每个数据库一行
binlog-ignore-db=mysql #不同步mysql系统数据库

修改从服务器配置文件
server-id=2
replicate-do-db=test
replicate-ignore-db=mysql
注意:MySQL 5.1.7版本之后,已经不支持把master配置属性写入my.cnf配置文件中了,只需要把同步的数据库和要忽略的数据库写入即可。

mysql -u root -p #进入MySQL控制台
slave stop; #停止slave同步进程
change master to master_host='192.168.1.106',master_user='jzk',master_password='1',master_log_file='mysql-bin.000008' ,master_log_pos=107; #执行同步语句
slave start; #开启slave同步进程
show slave status\G; #横竖倒转,出现以下内容


[img]http://dl2.iteye.com/upload/attachment/0100/9048/25cdd5d0-795d-35bf-86e1-3fbb28647668.jpg[/img]
看到这2行的时候说明主从服务器已经同步

5、彻底删除mysql
1 sudo apt-get autoremove --purge mysql-server-5.5
2 sudo apt-get remove mysql-server
3 sudo apt-get autoremove mysql-server
4 sudo apt-get remove mysql-common (非常重要)
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

6、修改字符编码集

sudo vim /etc/mysql/my.cnf

[client]
default-character-set=utf8
[mysqld]
character-set-server=utf8

sudo service mysql restart

create database mytest character set utf8;
alter database character set utf8; 修改已有数据库字符集


开启慢查询日志

show variables like '%slow%';


[img]http://dl2.iteye.com/upload/attachment/0101/3214/fbe08029-d560-34fb-b3f3-1065f1323b97.jpg[/img]

show variables like '%long%';


[img]http://dl2.iteye.com/upload/attachment/0101/3220/dcf133e4-2358-33fa-a4aa-b1a2aa1ca269.jpg[/img]


sudo vim /etc/mysql/my.cnf

增加如下2项
log_slow_queries=/var/lib/mysql/jd-slow.log
long_query_time=10



7、socket文件丢失
不能重启MySQL的临时解决方法
mysql -uroot -p1 --protocol tcp -hlocalhost

8、root密码破解

sudo vim /etc/mysql/my.cnf
在[mysqld]段下加入一行“skip-grant-tables”
sudo service mysql restart
#用空密码进入mysql管理命令行,切换到mysql库
mysql
Welcome to the MySQL monitor. Commands end with ; or \g.

mysql> use mysql
update user set password=PASSWORD("2") where user='root';

回到vim /etc/mysql/my.cnf,把刚才加入的那一行“skip-grant-tables”注释或删除掉。
再次重启mysql服务sudo service mysql restart,使用新的密码登陆,修改成功。

通过查看my.cfg找到datadir
sudo apt-get autoremove --purge mysql-server-5.5
sudo apt-get remove mysql-common
删除datadir目录
清理残留安装软件
dpkg -l |grep ^rc|awk '{print $2}' |sudo xargs dpkg -P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值