启用账户锁定、强密码策略、IP白名单、修改默认端口及日志监控可有效防止MySQL暴力破解,降低安全风险。

MySQL 防止暴力破解的核心在于加强认证安全、限制登录尝试和监控异常行为。通过合理配置和使用安全策略,能有效降低被暴力破解的风险。
1. 启用账户锁定策略
MySQL 从 5.7.17 版本开始支持原生的账户锁定功能,可通过设置失败登录次数来自动锁定账户。
例如,创建用户时指定最大错误登录次数:
CREATE USER 'admin'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'StrongPass123!' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1;这表示连续输错 3 次密码后,账户将被锁定 1 天。也可修改已有用户:
ALTER USER 'admin'@'localhost' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 1;2. 使用强密码策略
启用 MySQL 的 validate_password 插件,强制使用高强度密码,防止弱口令被轻易猜中。
操作步骤:
- 安装插件:INSTALL PLUGIN validate_password SONAME 'validate_password.so';
- 设置强度等级:SET GLOBAL validate_password.policy = MEDIUM;
- 要求包含数字、大小写字母、特殊字符,且长度不少于 8 位
这样可确保所有用户密码难以被字典或暴力攻击破解。
3. 限制访问来源(IP 白名单)
只允许特定 IP 或内网访问 MySQL 服务,减少暴露在公网的风险。
方法包括:
- 创建用户时限定主机:CREATE USER 'appuser'@'192.168.1.100' IDENTIFIED BY 'password';
- 避免使用 '%@%' 这类通配符开放远程访问
- 配合防火墙(如 iptables 或云安全组)仅放行必要 IP
4. 修改默认端口并关闭不必要的网络暴露
MySQL 默认使用 3306 端口,攻击者常针对此端口扫描。建议:
- 修改 my.cnf 配置文件中的 port 值,改为非常见端口
- 若非必要,绑定 bind-address 到内网地址(如 192.168.1.10),不监听公网
- 禁用 skip-networking 除非本地专用
5. 启用日志审计与监控
开启通用日志或错误日志,便于发现频繁失败登录尝试。
配置示例:
[mysqld] log-error = /var/log/mysql/error.log general_log = ON general_log_file = /var/log/mysql/general.log定期检查日志中大量 "Access denied" 记录,及时封禁可疑 IP。
基本上就这些。只要设置强密码、限制登录失败次数、控制访问源,并做好日志监控,MySQL 被暴力破解的概率会大幅下降。安全是个持续过程,定期审查用户权限和配置也很关键。










