重命名root账户、设置强密码并启用密码策略、限制登录来源、删除多余账户。具体:1. 重命名root提高隐蔽性;2. 使用ALTER USER设置高强度密码并启用validate_password插件;3. 仅允许localhost登录,禁止远程访问;4. 删除非本地root实例并执行FLUSH PRIVILEGES;定期审计用户权限与登录日志,确保安全持续有效。

在 mysql 中设置 root 用户的安全策略,核心是限制权限、强化认证和定期维护。root 是数据库的超级用户,一旦泄露风险极高,必须严格管理。
1. 修改默认 root 账户名
使用默认的 “root” 用户名容易成为攻击目标。建议重命名 root 账户以增加隐蔽性。
操作步骤:
登录 MySQL 后执行:
RENAME USER ‘root’@’localhost’ TO ‘admin_db’@’localhost’;
可根据实际需要自定义新用户名。注意:需确保知道新用户名以便后续登录。
2. 设置强密码并启用密码策略
强制 root 使用高强度密码,并通过插件限制密码复杂度。
设置强密码:
ALTER USER ‘root’@’localhost’ IDENTifIED BY ‘YourStrong!Passw0rd’;
密码应包含大小写字母、数字、特殊字符,长度不少于12位。
启用密码验证插件(MySQL 8.0+):
编辑 my.cnf 或 my.ini 配置文件,添加:
validate_password.component_load = ON
重启 MySQL 后,检查策略级别:
SHOW VARIABLES LIKE 'validate_password.%';
可调整策略等级(LOW/MEDIUM/STRONG),例如设为 MEDIUM:
SET GLOBAL validate_password.policy = MEDIUM;
3. 限制 root 登录来源
禁止 root 从远程登录,仅允许本地访问,防止网络嗅探或暴力破解。
查看当前 root 登录权限:
select user, host FROM mysql.user WHERE user = ‘root’;
若存在 ‘%’ 或具体 IP 记录,应删除或修改为 ‘localhost’ 和 ‘127.0.0.1’。
限制仅本地访问:
DROP USER IF EXISTS ‘root’@’%’;
FLUSH PRIVILEGES;
4. 删除多余 root 账户并刷新权限
系统可能因安装过程生成多个 root 实例,需清理冗余账户。
列出所有 root 相关账户:
SELECT user, host FROM mysql.user WHERE user = ‘root’;
保留 ‘root’@’localhost’ 和 ‘root’@’127.0.0.1’,其余删除:
DROP USER ‘root’@’::1′;
DROP USER ‘root’@’your-hostname’;
完成后运行:
FLUSH PRIVILEGES;
基本上就这些。关键是不让 root 暴露在网络中,用强密码,必要时重命名。定期检查用户列表,避免权限扩散。安全不是一次设置就能高枕无忧,要持续关注日志和异常登录。不复杂但容易忽略。