Mysql迁移用户和权限

Mysql迁移用户和权限

𝓓𝓸𝓷 Lv6

一、源库导出用户

Mysqldump在迁移数据库用户到目标库,导入用户帐号,即使目标库已经存在相当的帐号,默认都会强制覆盖,是因为mydump导出数据后会默认添加 DROP TABLE IF EXISTS user和 CREATE TABLE user

可以使用 –no-create-info 选项来排除表结构的创建语句(如 CREATE TABLE)。
可以使用 –no-create-db 选项来排除数据库的创建语句(如 CREATE DATABASE)。

1
2
3
4
5
[root@server01 ~]# mysqldump -uroot -p mysql user --no-create-info > /tmp/user.sql

[root@server01 ~]# mysqldump -uroot -p mysql user --no-create-info --where="user='hello'"> /tmp/user.sql

[root@server01 ~]# mysqldump -uroot -p mysql user --no-create-info --where="user in ('hello','backup')"> /tmp/user.sql

温馨提示:

  • 如果想手工修改user.sql,一定要在服务器上修改,如果复制到windows文本里修改,再粘贴回,可能因为字符集不相同,出现导入密码和实际密码不一样问题

  • 打开mysql_users.sql,再次确认是否存在DROP TABLE语句,避免在目标库误删原有用户表

  • 注意字符集和SQL模式兼容性

二、源库导出权限

1.确认用户名
1
2
3
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

mysql -B -N -uroot -p -e "SELECT CONCAT('\'', user,'\'@\'', host, '\'') FROM user WHERE user IN('hie')" mysql > /tmp/mysql_users.txt
2.确认权限
1
2
3
4
5
6
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

最后一行增加:
sed -i 's/$/;/' /tmp/mysql_all_users_sql.sql

sed -i '$a flush privileges;' /tmp/mysql_all_users_sql.sql

三、目标库导入用户及权限

1
2
3
use mysql
source /tmp/user.sql
source /tmp/mysql_all_users_sql.sql

四、验证用户权限

1
2
SELECT User, Host FROM mysql.user WHERE User = 'your_user';
SHOW GRANTS FOR 'your_user'@'host';

五、刷新权限

1
flush privileges

六、一次性导出用户及权限(可选)

1
2
3
4
5
6
7
8
9
10
11
12
13
MySQL 的用户和权限信息存储在 mysql 数据库中,特别是以下表:

user(全局权限)
db(数据库级权限)
tables_priv(表级权限)
columns_priv(列级权限)
procs_priv(存储过程和函数权限)
你可以用 mysqldump 导出这些表:

mysqldump -u root -p --single-transaction --routines --triggers mysql user db tables_priv columns_priv procs_priv > mysql_users.sql

温馨提示:
注意:MySQL 8.0+,还需导出role_edges、default_roles等表
  • 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.
评论