安装
linux下mysql安装完后是默认:区分表名的大小写,不区分列名的大小写;
用root帐号登录后,在/etc/my.cnf 中的[mysqld]后添加添加lower_case_table_names=1,重启MYSQL服务,这时已设置成功:不区分表名的大小写;
1、MySQL授权其他机器访问
2、用192.168.1.108访问106的mysql
ERROR 2003 (HY000): Can't connect to MySQL server on 192.168.1.106
解决:
3、开启、操作logbin日志
操作
使用mysql-bin.000001恢复数据
[img]http://dl2.iteye.com/upload/attachment/0100/8996/ef5a3675-68aa-3cce-acb3-f61fea2aea89.jpg[/img]
备份数据
4、主从复制
[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、修改字符编码集
开启慢查询日志
[img]http://dl2.iteye.com/upload/attachment/0101/3214/fbe08029-d560-34fb-b3f3-1065f1323b97.jpg[/img]
[img]http://dl2.iteye.com/upload/attachment/0101/3220/dcf133e4-2358-33fa-a4aa-b1a2aa1ca269.jpg[/img]
7、socket文件丢失
不能重启MySQL的临时解决方法
mysql -uroot -p1 --protocol tcp -hlocalhost
8、root密码破解
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