目录标题
想让一个 MySQL 用户拥有 和 root 一样的权限(能查看所有数据库、所有表,几乎无任何限制),本质上就是给该用户授予 SUPER 权限 + 所有对象级权限 + 全局级权限。
✅ 一条命令:授予一个用户与 root 等同的权限
假设你的用户是:
- 用户名:
myadmin - 主机:
%(任意 IP) - 密码:你自己设置
授予 root 等价权限:
GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;
说明:
| 授权项 | 含义 |
|---|---|
ALL PRIVILEGES ON *.* | 对所有数据库和所有表拥有所有操作权限 |
WITH GRANT OPTION | 允许用户继续授权其他用户(与 root 一样强大) |
@'%' | 表示允许任意来源 IP 登录,可根据需要改成具体 IP |
🔎 MySQL8.0 是否还需要 SUPER 权限?
MySQL 8.0 把很多 root 权限细分,不再直接使用 SUPER,但通过 ALL PRIVILEGES 会自动授予等价能力,如:
SYSTEM_VARIABLES_ADMINSYSTEM_USERRELOADPROCESSSHUTDOWNREPLICATION SLAVE ADMINREPLICATION MASTER ADMIN- ……等
因此 上面那条 GRANT 足以使用户完全等价 root。
📌 如果你想手动授予所有常用 root 权限(更细粒度)
GRANT ALL PRIVILEGES ON *.* TO 'myadmin'@'%' WITH GRANT OPTION;
GRANT SYSTEM_USER, SYSTEM_VARIABLES_ADMIN, REPLICATION SLAVE ADMIN, REPLICATION MASTER ADMIN
ON *.* TO 'myadmin'@'%';
FLUSH PRIVILEGES;
但一般不需要写这么复杂,GRANT ALL PRIVILEGES 就够用了。
🧪 如何验证该用户是否真的拥有 root 等级权限?
登录:
mysql -umyadmin -p
检查全局权限:
SHOW GRANTS FOR 'myadmin'@'%';
检查是否能看所有 DB:
SHOW DATABASES;
检查是否能访问系统库:
SELECT * FROM mysql.user LIMIT 1;
如果能查系统表,就是超级权限。
❗ 安全提示(很重要)
-
拥有 root 权限的用户非常危险,特别是
@'%'会允许任意地址访问。 -
强烈建议:
- 使用复杂密码
- 最好用固定 IP(如
@'10.0.0.%') - 不在公网暴露 MySQL 端口 3306
如果你愿意,我可以帮你写:
- 最佳安全实践版本
- 最小权限版本
- 特定 IP 限制的 root 等价用户

被折叠的 条评论
为什么被折叠?



