应立即限制MySQL root用户权限,仅保留'root'@'localhost',禁用远程登录,创建最小权限专用账号,并通过my.cnf加固配置。

MySQL root 用户权限过大是常见安全隐患,应立即限制其访问范围,改用最小权限原则管理数据库。
限制 root 用户的登录主机
默认 root 用户通常允许从任意主机('%')登录,这极大增加了被暴力破解或远程攻击的风险。应将其限定为仅本地访问,或指定可信IP。
- 执行 UPDATE mysql.user SET host='127.0.0.1' WHERE user='root' AND host='%';
- 运行 FLUSH PRIVILEGES; 生效
- 如需远程管理,建议创建专用账号(如 admin@192.168.1.100),并授予必要权限
禁用 root 远程登录(推荐做法)
生产环境应禁止 root 通过网络直接登录,强制使用普通管理账号+sudo 或跳板机方式操作。
- 删除通配符主机记录:DROP USER 'root'@'%';
- 保留且仅保留 'root'@'localhost'(Unix socket 访问更安全)
- 确认无其他高危 host(如 'root'@'::1'、'root'@'%')残留
创建低权限专用账号替代日常操作
开发、运维、备份等不同场景应使用对应权限的账号,避免长期依赖 root。
- 应用账号示例:CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong_pass';
- 按需授权:GRANT SELECT, INSERT, UPDATE ON mydb.* TO 'app_user'@'192.168.1.%';
- 备份账号可只授 SELECT, LOCK TABLES, RELOAD,不开放 DDL 或用户管理权限
定期审计与加固基础配置
权限控制只是起点,还需结合 MySQL 配置层增强整体安全性。
- 在 my.cnf 中设置 skip-networking(仅本地 socket)或 bind-address = 127.0.0.1
- 启用 validate_password 插件,强制密码复杂度
- 关闭匿名用户:DROP USER ''@'localhost';
- 删除测试数据库:DROP DATABASE IF EXISTS test;










