mysql数据库用户及权限迁移
在迁移mysql数据库主机的时候,比较容易的是迁移业务数据库, 像系统数据库mysql中存储的数据库用户及其权限,常见的操作是在新的mysql主机上再手动创建一遍,当mysql数据库用户数量多的时候,就是一项比较费时费力的事情。那是否有快捷的方式来迁移数据库用户及权限呢?
答案是有的。 下面我们介绍下实现方法。
(1)、导出mysql库中的user表
mysqldump -uroot -p mysql user > /tmp/user.sql
(2)、导出mysql库中用户权限
1. 获取mysql库中用户的列表信息
getuserlist.sh 脚本内容
1 |
2. 获取用户权限信息
getuserPrv.sh 脚本内容
1 |
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