mysql数据库用户及权限迁移

在迁移mysql数据库主机的时候,比较容易的是迁移业务数据库, 像系统数据库mysql中存储的数据库用户及其权限,常见的操作是在新的mysql主机上再手动创建一遍,当mysql数据库用户数量多的时候,就是一项比较费时费力的事情。那是否有快捷的方式来迁移数据库用户及权限呢?
答案是有的。 下面我们介绍下实现方法。

(1)、导出mysql库中的user表
mysqldump -uroot -p mysql user > /tmp/user.sql

(2)、导出mysql库中用户权限
1. 获取mysql库中用户的列表信息
getuserlist.sh 脚本内容

1
/usr/local/mysql/bin/mysql -B -N -uroot -p'MysqlPassword' -S /tmp/mysql.sock -P 3306 -e "SELECT CONCAT('\'', user,'\'@\'', host, '\'') FROM user WHERE user NOT IN('replication','root','','mysql.session','mysql.sys')" mysql > /tmp/mysql_users.txt

2. 获取用户权限信息
getuserPrv.sh 脚本内容

1
while read line; do /usr/local/mysql/bin/mysql -B -N -uroot -p'MysqlPassword' -S /tmp/mysql.sock -P 3306 -e "SHOW GRANTS FOR $line"; done < /tmp/mysql_users.txt > /tmp/mysql_all_users_sql.sql

3. 对上面生成sql脚本文件进行修改
在每行的结尾增加;做为结束符
sed -i 's/$/;/' /tmp/mysql_all_users_sql.sql

在最后一行增加 "flush privileges;" 来刷新权限
sed -i '$a flush privileges;' /tmp/mysql_all_users_sql.sql

(3)、在目标mysql上导入user用户及权限
将上面处理过的sql脚本文件/tmp/user.sql、/tmp/mysql_all_users_sql.sql 在目标mysql实例上执行
将mysql_all_users_sql.sql 文件上传到目标mysql实例主机上,通过mysql命令执行导入操作, 可参考的操作如下:
mysql -uroot -p'MysqlPassword' -S /tmp/mysql.sock -P 3306 < /root/mysql_all_users_sql.sql

相关新闻

联系我们

全国服务热线

400-033-9553

电子邮件:admin@example.com
工作时间:09:00-17:00 周一至周五

在线客服
关注微信
关注微信
分享本页
返回顶部