MySQL 用户拥有 和 root 一样的权限

想让一个 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_ADMIN
  • SYSTEM_USER
  • RELOAD
  • PROCESS
  • SHUTDOWN
  • REPLICATION SLAVE ADMIN
  • REPLICATION 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 等价用户
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值