Mysql迁移用户和权限
一、源库导出用户
Mysqldump在迁移数据库用户到目标库,导入用户帐号,即使目标库已经存在相当的帐号,默认都会强制覆盖,是因为mydump导出数据后会默认添加 DROP TABLE IF EXISTS user和 CREATE TABLE user
可以使用 –no-create-info 选项来排除表结构的创建语句(如 CREATE TABLE)。
可以使用 –no-create-db 选项来排除数据库的创建语句(如 CREATE DATABASE)。
1 | [root@server01 ~]# mysqldump -uroot -p mysql user --no-create-info > /tmp/user.sql |
温馨提示:
如果想手工修改user.sql,一定要在服务器上修改,如果复制到windows文本里修改,再粘贴回,可能因为字符集不相同,出现导入密码和实际密码不一样问题
打开mysql_users.sql,再次确认是否存在DROP TABLE语句,避免在目标库误删原有用户表
注意字符集和SQL模式兼容性
二、源库导出权限
1.确认用户名
1 | mysql -B -N -uroot -p -e "SELECT CONCAT('\'', user,'\'@\'', host, '\'') FROM user WHERE user NOT IN('repl','replication','root','','mysql.session','mysql.sys','mysql.infoschema')" mysql > /tmp/mysql_users.txt |
2.确认权限
1 | while read line; do mysql -B -N -uroot -p -e "SHOW GRANTS FOR $line"; done < /tmp/mysql_users.txt > /tmp/mysql_all_users_sql.sql |
三、目标库导入用户及权限
1 | use mysql |
四、验证用户权限
1 | SELECT User, Host FROM mysql.user WHERE User = 'your_user'; |
五、刷新权限
1 | flush privileges |
六、一次性导出用户及权限(可选)
1 | MySQL 的用户和权限信息存储在 mysql 数据库中,特别是以下表: |
- Title: Mysql迁移用户和权限
- Author: 𝓓𝓸𝓷
- Created at : 2025-12-03 17:37:26
- Updated at : 2025-12-23 17:39:38
- Link: https://www.zhangdong.me/mysql-transfer-users-permissions.html
- License: This work is licensed under CC BY-NC-SA 4.0.
评论
