<p>GRANT ALL PRIVILEGES ON . 不等于 root 权限,仅覆盖 SELECT、INSERT、CREATE、DROP 等常规对象权限,不包含 CREATE USER、RELOAD、SHUTDOWN、PROCESS、REPLICATION CLIENT 及 MySQL 8.0+ 的 BACKUP_ADMIN 等管理权限,且 GLOBAL 权限不可通过角色继承,必须直授用户并显式添加 GRANT OPTION 与安全属性。</p>

GRANT ALL PRIVILEGES ON <em>.</em> 并不等于 root 级管理权限——它缺了关键几项,直接执行会留下运维盲区。
GRANT ALL ON *.* 实际覆盖哪些权限?
它只包含常规对象操作权限:比如 SELECT、INSERT、CREATE、DROP、ALTER、INDEX、CREATE VIEW、EXECUTE 等,作用范围是「所有现有 + 未来新建的数据库和表」。
但以下权限 完全不包含,必须显式单独授予:
-
CREATE USER(创建用户) -
RELOAD(执行FLUSH类命令) -
SHUTDOWN(关闭 MySQL 实例) -
PROCESS(查看线程、诊断阻塞) -
REPLICATION CLIENT(查看主从状态) -
SUPER(MySQL 5.7 及以前的高危权限,8.0+ 已拆分为更细粒度权限) - MySQL 8.0+ 新增的
BACKUP_ADMIN、CLONE_ADMIN、APPLICATION_PASSWORD_ADMIN等
真正接近 root 的授权写法
若需等效于 root 的全局控制能力(例如 DBA 或自动化运维账号),必须组合显式授权:
CREATE USER 'admin'@'%' IDENTIFIED BY 'strong_pwd'; GRANT ALL PRIVILEGES ON *.* TO 'admin'@'%'; GRANT CREATE USER, RELOAD, SHUTDOWN, PROCESS, REPLICATION CLIENT, BACKUP_ADMIN, CLONE_ADMIN ON *.* TO 'admin'@'%'; GRANT GRANT OPTION ON *.* TO 'admin'@'%'; FLUSH PRIVILEGES;
注意:GRANT OPTION 必须显式加,否则该用户无法把权限再授给他人;BACKUP_ADMIN 和 CLONE_ADMIN 在 MySQL 8.0.17+ 才可用,旧版本需用 SUPER 替代(但风险更高)。
MySQL 8.0 角色无法承载 GLOBAL 权限
如果你试图用角色简化管理,比如:
CREATE ROLE dba_role; GRANT SELECT ON *.* TO dba_role; GRANT dba_role TO 'admin'@'%';
结果是:这条语句能执行成功,但 'admin'@'%' 实际拿不到全局 SELECT 权限——MySQL 8.0 明确限制角色只能继承数据库级(db.*)或更低层级权限,*.* 必须直授用户或代理用户(PROXY)。
绕过方式只有两个:
- 放弃角色,直接
GRANT ... ON *.* TO 'u'@'h' - 用角色管理
db1.*、db2.*等具体库权限,GLOBAL 权限另走直授流程
CREATE USER + GRANT 分开执行才是安全底线
跳过 CREATE USER 直接 GRANT ... TO 'u'@'h' 会触发隐式建户,带来三类隐患:
- MySQL 8.0 默认用
caching_sha2_password插件,但旧客户端(如 PHP 7.4 默认 mysqlnd)可能握手失败 - 密码策略全按默认值:无过期(
PASSWORD EXPIRE)、无锁定(FAILED_LOGIN_ATTEMPTS)、无历史保留(PASSWORD HISTORY) - 账户状态不可控:比如
ACCOUNT LOCK、PASSWORD REQUIRE CURRENT都无法初始化设定
正确姿势始终是先定义强约束用户,再赋权:
CREATE USER 'admin'@'%' IDENTIFIED WITH caching_sha2_password BY 'pwd' PASSWORD EXPIRE INTERVAL 90 DAY FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1; GRANT ... ON *.* TO 'admin'@'%';
真正要让一个用户具备全局管理能力,不是堆 ALL PRIVILEGES,而是看清哪些权限被漏掉、哪些机制(如角色)不支持、哪些安全属性必须前置声明——缺一不可。


















