如何禁止匿名用户_mysql安全加固方法

来源:这里教程网 时间:2026-02-28 20:33:56 作者:

禁止匿名用户是 MySQL 安全加固中最基础也最关键的一步。默认安装的 MySQL 可能存在空用户名(即 '')的账号,这类匿名用户无需密码即可登录,一旦被利用,极易导致数据泄露或提权攻击。

检查是否存在匿名用户

以 root 或高权限账号登录 MySQL 后,执行以下命令查看所有用户:

SELECT User, Host FROM mysql.user;

重点关注 User 列为空字符串('')的记录,例如:
| '' | localhost |
| '' | % |

这类就是匿名用户,必须清理。

删除匿名用户

确认后,逐条执行 DROP USER 删除(注意:MySQL 5.7+ 推荐用 DROP USER,不建议直接删表):

DROP USER ''@'localhost';
DROP USER ''@'%';

如果提示“ERROR 1396 (HY000)”,说明该用户不存在,可跳过;若使用的是较老版本(如 5.1),可用以下方式安全清理:

先刷新权限:FLUSH PRIVILEGES; 再手动更新 user 表(仅当 DROP USER 不生效时备用):DELETE FROM mysql.user WHERE User='';

验证是否清除干净

再次运行 SELECT User, Host FROM mysql.user;,确保结果中不再出现空 User。同时建议做一次连接测试:

尝试用匿名方式连接:mysql -u '' -h 127.0.0.1 -P3306,应报错拒绝访问 用真实账号(如 root)连接仍需密码,且不能绕过认证

配套加固建议

禁掉匿名用户只是起点,还需同步落实以下措施:

禁用 root 远程登录:将 root@'%' 删除或限制为内网 IP,保留 root@localhost 即可 为所有用户设置强密码:避免空密码、弱密码(如 '123456'、'password') 关闭旧协议认证插件:检查 plugin 列是否为 mysql_native_password,避免使用已废弃的 old_password 定期审计用户列表:尤其在部署新应用、交接数据库权限后重新核查

相关推荐