phpMyAdmin中无法直接勾选CREATE USER权限,因其非独立权限项,必须以root或高权限账号登录,在全局权限中同时勾选CREATE和GRANT OPTION,并手动执行FLUSH PRIVILEGES生效。
phpMyAdmin里根本看不到CREATE USER权限选项
因为 create user 权限本身不是普通数据库操作权限,而是「管理类」权限,必须通过 grant option + 全局权限组合才能间接实现。phpmyadmin 的图形界面默认不暴露这个权限项——它只在你拥有 grant option 且登录账号是 root 或等效高权限账户时,才可能在「全局权限」区域底部出现「with grant option」复选框。
必须用 root 登录并手动勾选 GRANT OPTION
常见错误现象:#1045 - Access denied for user 'xxx'@'localhost' 或编辑权限页完全不显示「Global privileges」区块。这说明当前登录账号没资格操作用户系统权限。
- 确认左上角 phpMyAdmin 版本 ≥ 5.2;旧版需点「Edit privileges」后手动滚动到底部找「With GRANT option」
- 主机名要精确匹配:给
'admin'@'localhost'授权,'admin'@'127.0.0.1'是另一个独立账号,权限不互通 - 勾选「Global privileges」下的
CREATE和GRANT OPTION(仅这两项就足够让该用户执行CREATE USER) - 切勿勾选
FILE、SUPER、SHUTDOWN—— 这些会让用户能读取服务器文件或停库
授权后必须手动刷新权限表
phpMyAdmin 不会自动执行 FLUSH PRIVILEGES,改完权限点「执行」只是写入 mysql.user 表,MySQL 服务仍缓存旧权限。
- 登录后立即在 phpMyAdmin 的「SQL」标签页执行:
FLUSH PRIVILEGES; - 或者点击右上角「Reload privilege tables」按钮(部分版本可见)
- 测试新用户能否建用户:用刚授权的账号登录,执行
CREATE USER 'test'@'localhost' IDENTIFIED BY 'pass';,若报错Access denied; you need (at least one of) the CREATE USER privilege(s),说明没刷成功
CREATE USER 权限不能单独授予,必须搭配 GRANT OPTION
MySQL 协议限制:CREATE USER 本身不是独立权限位,它是 GRANT OPTION 在全局上下文中的隐含能力。所以你永远找不到一个叫「CREATE USER」的勾选项。
- 只给
CREATE USER权限?不可能。MySQL 没这个权限粒度 - 只给
GRANT OPTION但没CREATE?该用户能授予权限,但不能新建用户 - 正确组合只有:
CREATE+GRANT OPTION(全局),缺一不可 - MariaDB 10.4+ 若启用了
skip-grant-tables,整个权限界面失效,必须先关掉再重启 mysqld
实际最易被忽略的是主机名匹配和 FLUSH PRIVILEGES 的手动触发——这两个点卡住的人最多。
立即学习“PHP免费学习笔记(深入)”;



















