phpmyadmin 无“多层级管理架构”开关,其权限依赖 mysql 的 grant 模型;需注意 host 匹配、flush privileges 刷新、with grant option 转授权、导出时勾选 create user 和 set password、认证插件兼容性。
phpmyadmin 里根本没“多层级管理架构”这个开关
phpmyadmin 本身只是 mysql / mariadb 的 web 前端,它不维护用户体系,也不实现权限继承或角色分组。所谓“多层级管理”,实际是底层数据库的 grant 权限模型在起作用——你配置的是 mysql 用户权限,phpmyadmin 只负责帮你填表、发命令。
常见错误现象:phpMyAdmin 界面里点“用户账户”→“编辑权限”,改完发现子账户还是能删库,或者连不上——大概率是没刷新权限,或混淆了 localhost 和 127.0.0.1 这两个不同 host。
- MySQL 认为
'user'@'localhost'和'user'@'127.0.0.1'是两个完全独立的用户,host 不匹配就拒绝连接 - 权限修改后必须执行
FLUSH PRIVILEGES;,否则不生效(phpMyAdmin 点“重新加载权限”按钮就是干这事) - phpMyAdmin 登录用的账号,必须有
mysql.user表的 SELECT 权限,否则看不到其他用户列表
用 GRANT 实现“管理员 → 部门主管 → 开发者”的权限链
MySQL 没有原生角色继承,但可以通过精细控制 GRANT 的 ON 范围和 WITH GRANT OPTION 模拟层级。关键不是“谁管谁”,而是“谁能给谁授什么权”。
使用场景:总部 DBA 创建 dept_admin,允许其管理 sales_* 开头的所有库,且能把部分权限再授给开发人员。
- 先建用户:
CREATE USER 'dept_admin'@'%' IDENTIFIED BY 'strong-pass'; - 授权并允许转授:
GRANT SELECT, INSERT, UPDATE ON `sales_%`.* TO 'dept_admin'@'%' WITH GRANT OPTION; - 开发人员只能由
dept_admin登录 phpMyAdmin 后手动添加,并且只能被授予dept_admin自己拥有的那些权限(不能越权) - 禁止跨库操作:不要用
ON *.*,哪怕加了WHERE条件也无效——权限是静态绑定到库/表名的
phpMyAdmin 中“导出用户权限”容易漏掉 host 和密码哈希
点击“用户账户”→“选中用户”→“导出所选用户”时,生成的 SQL 默认只含 GRANT 语句,不含 CREATE USER 或密码信息。直接导入到新环境会报错:ERROR 1133 (42000): Can't find any matching row in the user table。
立即学习“PHP免费学习笔记(深入)”;
- 务必勾选“添加 CREATE USER 语句”和“添加 SET PASSWORD 语句”(phpMyAdmin 5.2+ 在导出弹窗底部)
- 如果目标 MySQL 版本 ≥ 8.0,且原用户用
caching_sha2_password插件认证,导出的SET PASSWORD可能不兼容旧版本;此时需手动替换为ALTER USER ... IDENTIFIED WITH mysql_native_password - host 写成
'%'很方便,但生产环境建议缩窄,比如'192.168.10.%',避免意外开放公网
权限变更后开发者连不上?先查 authentication_string 和 plugin
MySQL 8.0 默认用 caching_sha2_password,而老版本 phpMyAdmin 或某些 PHP 扩展(如旧版 mysqli)不支持。现象是:用户明明存在、密码正确、权限已赋,但连接时卡住或报 Authentication plugin 'caching_sha2_password' cannot be loaded。
- 检查用户认证方式:
SELECT User, Host, plugin FROM mysql.user WHERE User = 'dev_user'; - 临时降级(测试用):
ALTER USER 'dev_user'@'%' IDENTIFIED WITH mysql_native_password BY 'xxx'; - 长期方案是升级 phpMyAdmin 到 5.1+ 并确认 PHP 启用了
mysqli或pdo_mysql的 sha2 支持,而不是绕过安全机制
真正麻烦的从来不是怎么点菜单,而是权限粒度、host 匹配、认证插件、权限缓存这四件事凑在一起出问题——调一个,另外三个可能跟着翻车。











