忘记 root 密码
mysql server version : 5.7.9+
查找MySQL sever 安装位置
sudo find / -name “mysqld”
- 停服务
ps -ef|grep mysql
sudo kill -9 pid1 pid2 - 重启
1
mysqld_safe --skip-grant-tables &
- 登录
mysql -u root - 重置密码
use mysql;
update user set authentication_string=’password’, password_expired = ‘N’ where User =’root’ and Host=’localhost’;
flush privileges;
exit;
停服务重新登录即可
sudo mysqld -uroot &
注意:Mac 上通过 System Preferences 启动的 server,其启动参数 -u 为 _mysql,在上述第2步之后,第3步改为
mysql -u _mysql
grant all privileges on . to ‘root‘@’%’ identified by ‘password’ with grant option;
数据迁移
导出工具
mysqldump
- 导出 sql导入:
1
2mysqldump -hhost -uroot -ppassword --single-transaction schema table -r
dump.sql1
2
3mysql -uroot -p
>use databases;
>source /path/to/dump.sql - 导出 tab
mysqldump -hhost -uroot -ppassword –tab=/Users/hero/tmp –fields-terminated-by=’^!’ –lines-terminated-by=’\n’ –single-transaction schema table
比较工具
1 | mysqldbcompare --server1=root:密码@IP:3306 --server2=root:passwd@ip:3306 --difftype=sql schema1:schema2 |
如果schema含有非字母字符,
–difftype=sql “`nh-rel-x`:`nh-rel-x`“ –run-all-tests > ~/tmp/res.txt
比较脚本
场景:在不影响生产的情况下拿A库与B库做比较,A与B分别在两个地方,用otter做了实时同步。但是otter有问题,不知道哪些数据同步有问题,所以需要逐表比对一下。
1 | . /Users/hero/.zshrc |
1 | . /Users/hero/.zshrc |
mm
mysql -uroot -ppassword < init.sql
init.sql
1 | use mydb; |