mysql主从复制默认不同步mysql系统库,用户权限表(如mysql.user)不会自动同步;需通过show grants导出权限语句,在从库手动执行导入,注意认证插件兼容性及sql_mode设置。
不能通过 phpmyadmin 界面直接把用户权限“同步”到从库服务器——主从复制默认不复制 mysql 系统库,用户权限表(如 mysql.user、mysql.db)不会自动同步。
为什么 phpMyAdmin 的「复制」界面不管用
phpMyAdmin 的「复制」功能只用于配置主从关系本身(比如填入 MASTER_HOST),它不处理用户权限迁移。点「从复制」或「主服务器状态」看到的只是同步链路状态,不是权限同步开关。
- 主从复制默认忽略
mysql、information_schema、performance_schema这些系统库 -
SHOW SLAVE STATUS里Replicate_Wild_Ignore_Table通常包含mysql.%,这是硬编码限制 - 即使你手动在主库改了
mysql.user表,从库也不会 apply 这些变更
正确做法:导出 + 手动导入权限 SQL
必须跳过主从链路,单独把权限迁过去。核心是用 SHOW GRANTS,不是查表或 phpMyAdmin 导出按钮。
- 在源库(主库)的 phpMyAdmin「SQL」标签页执行:
SHOW GRANTS FOR 'username'@'host'; - 逐个用户导出;用户多就先跑:
SELECT CONCAT('SHOW GRANTS FOR ''',user,'''@''',host,''';') FROM mysql.user WHERE user != 'root';,再批量执行结果 - 把所有输出的
GRANT语句保存为permissions.sql,注意检查是否含WITH GRANT OPTION和IDENTIFIED WITH - 在目标从库上执行这些语句前,确认
sql_mode不含NO_AUTO_CREATE_USER(可加SET sql_mode = '';开头)
MySQL 8.0+ 特别要注意认证插件
如果源库用户用的是 caching_sha2_password,而从库没启用该插件,GRANT ... IDENTIFIED WITH 会直接报错 ERROR 1410。
- 查源库:
SELECT user, host, plugin FROM mysql.user; - 若
plugin是caching_sha2_password,从库要么启用该插件,要么改用兼容写法:CREATE USER 'u'@'h' IDENTIFIED WITH mysql_native_password BY 'pwd'; - 别用
SET PASSWORD,它不更新plugin字段,只改哈希值
最容易被忽略的是:权限语句顺序和 FLUSH PRIVILEGES 的必要性——GRANT 语句本身会重载权限,但如果你混用了 INSERT INTO mysql.user 或手动改了系统表,就必须补一句 FLUSH PRIVILEGES;,否则新权限不生效。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











