一键导出 MySQL 所有用户+权限+密码
时间:2026-4-20 14:54 作者:Anglei 分类: 数据库
导出 MySQL 所有用户 + 权限 + 密码(可直接在另一台服务器导入)
不用写复杂脚本,一条命令搞定👇
一、直接导出所有 MySQL 用户(不含系统用户)
在 Linux 命令行 执行(不是 MySQL 内):
mysql -uroot -p -e "SELECT CONCAT('CREATE USER IF NOT EXISTS \'',user,'\'@\'',host,'\' IDENTIFIED WITH ',plugin,' AS \'',authentication_string,'\';') FROM mysql.user WHERE user NOT IN ('mysql.infoschema','mysql.session','mysql.sys');" > mysql_users.sql
执行后会生成:
mysql_users.sql
里面就是所有业务用户的创建语句(包含加密密码、认证方式、host)
二、再导出所有用户的权限
mysqldump -uroot -p mysql user db tables_priv columns_priv procs_priv > mysql_privileges.sql
三、最终你得到 2 个文件
-
mysql_users.sql
所有用户:root、docu、fankui、maxada...
包含:用户名、host、认证插件、加密密码 -
mysql_privileges.sql
所有用户的权限(哪个用户能访问哪个库)
四、在新服务器导入(直接用)
# 导入用户
mysql -uroot -p < mysql_users.sql
# 导入权限
mysql -uroot -p < mysql_privileges.sql
# 刷新权限
mysql -uroot -p -e "FLUSH PRIVILEGES;"
五、如果你只想【查看导出内容】
直接看:
cat mysql_users.sql
你会看到类似:
CREATE USER IF NOT EXISTS 'root'@'%' IDENTIFIED WITH caching_sha2_password AS '*XXX';
CREATE USER IF NOT EXISTS 'docu'@'172.17.0.%' IDENTIFIED WITH caching_sha2_password AS '*XXX';
...
总结
你只需要复制 这 1 条命令,就能导出所有业务用户(含密码、host、插件):
mysql -uroot -p -e "SELECT CONCAT('CREATE USER IF NOT EXISTS \'',user,'\'@\'',host,'\' IDENTIFIED WITH ',plugin,' AS \'',authentication_string,'\';') FROM mysql.user WHERE user NOT IN ('mysql.infoschema','mysql.session','mysql.sys');" > mysql_users.sql

本文完结,相关标签: mysql
推荐阅读:
![]() 路过(0) |
![]() 雷人(0) |
![]() 握手(0) |
![]() 鲜花(0) |
![]() 鸡蛋(0) |




