当前位置: 首页
数据库
MySQL防止非法用户暴力破解密码的配置方法

MySQL防止非法用户暴力破解密码的配置方法

热心网友 时间:2026-07-18
转载

MySQL防暴力破解需同时配置FAILED_LOGIN_ATTEMPTS(失败次数阈值)和PASSWORD_LOCK_TIME(锁定时间),依赖validate_password插件,且仅对caching_sha2_password等认证插件生效。锁定期满后需成功登录方可重置失败计数。还需安装connection_control及配套组件,配合网络层IP白名

首先给出明确结论:要为 MySQL 配置防暴力破解机制,并非简单设置几个参数就能生效。**FAILED_LOGIN_ATTEMPTS** 和 **PASSWORD_LOCK_TIME** 这两个参数必须成对使用,并且依赖 `validate_password` 插件处于启用状态。此外,它们仅对采用 `caching_sha2_password` 或 `mysql_native_password` 认证插件的用户有效;单独配置其中一个参数等同于未设。参数单位是天,锁定到期后不会自动解除,必须有一次成功的登录才能重置失败计数。

MySQL如何配置以防止非法用户暴力破解数据库密码?

FAILED_LOGIN_ATTEMPTS 和 PASSWORD_LOCK_TIME 必须成对设置

如果单独执行 ALTER USER 'u'@'%' FAILED_LOGIN_ATTEMPTS 3,MySQL 会直接忽略该指令,不会产生任何效果。这两个参数是硬性捆绑的——缺一不可,排列顺序无关紧要,但缺少任意一个就会完全失效。

  • 新建用户时,必须一次性完整书写:CREATE USER 'api'@'%' IDENTIFIED WITH caching_sha2_password BY 'pwd' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 0.04167(锁定1小时)
  • 对已有用户进行修改时,连认证插件也必须一同更换:ALTER USER 'api'@'%' IDENTIFIED WITH caching_sha2_password BY 'newpwd' FAILED_LOGIN_ATTEMPTS 3 PASSWORD_LOCK_TIME 0.04167
  • PASSWORD_LOCK_TIME 的单位为"天",因此锁定5分钟需要写成 0.00347(5 ÷ 1440)。如果设为 0,表示永久锁定,而非"不锁定"
  • 锁定期满后,不会自动解锁——必须有一次成功的登录才能重置失败计数,同时清除 account_locked = 'Y' 的状态

validate_password 插件不是可选,而是必需

即使参数书写完整、认证插件也匹配,但如果 `validate_password` 未被启用,失败登录根本不会累积计数。你在 `mysql.user` 表中永远看不到 `account_locked = 'Y'`,错误日志中也无法搜索到 `Too many failed login attempts` 这条信息。

  • 检查是否激活:SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'validate_password',状态必须为 `ACTIVE`
  • 启用方式有两种:在配置文件中添加 plugin_load_add = validate_password.so 后重启;或者直接执行 INSTALL PLUGIN validate_password SONAME 'validate_password.so'
  • 启用后会自动激活密码强度策略(例如 `validate_password.length`),这可能会影响已有的创建用户脚本,建议提前做好验证

connection_control 插件必须安装两个组件才生效

只安装 `CONNECTION_CONTROL` 并不足够——它负责延时逻辑,但失败计数依赖于配套组件 `CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS`。如果后者未安装,执行 `SHOW VARIABLES LIKE '%connection_control%'` 将无法看到任何相关变量,所有配置均无效。

  • 必须按顺序执行:先执行 INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so',再执行 INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so'
  • connection_control_failed_connections_threshold 参数如果不写入 `my.cnf` 则不会持久化——通过 `SET GLOBAL` 设置后,重启即失效
  • 注意单位:connection_control_min_connection_delay 的单位是毫秒,而非秒;`max` 值设置过高(例如 60000)可能会卡死连接池,引发 `Too many connections`
  • 'root'@'localhost' 和所有本地连接默认被绕过,这是设计的正常行为,并非漏洞

别信“%”通配符,IP 白名单才是第一道墙

只要 `3306` 端口对公网开放,并且用户的 Host 设置为 `'%'`,暴力破解的风险就始终真实存在。MySQL 自身的账户锁定仅仅是最外层防线,不能替代网络隔离。

  • 禁止远程 root 登录:DELETE FROM mysql.user WHERE user='root' AND host!='localhost',然后执行 FLUSH PRIVILEGES
  • 业务账号必须绑定具体的 IP 或内网段:CREATE USER 'webapp'@'192.168.10.50' IDENTIFIED BY 'strong_pwd'
  • 云环境务必在安全组层面只放行应用服务器的内网 IP;物理机使用 `iptables` 或 `ufw` 严格限制源地址
  • bind-address 绝不可设为 `0.0.0.0`,应优先设为 `127.0.0.1` 或内网地址
真正起效的从来不是单点配置,而是 `caching_sha2_password` + `validate_password` + `FAILED_LOGIN_ATTEMPTS/PASSWORD_LOCK_TIME` 三者同时在线,再加上 `CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS` 的延时压制以及防火墙层面的 IP 白名单——缺少任何一环,攻击者都可能找到绕过途径。
来源:https://www.php.cn/faq/2814804.html

游乐网为非赢利性网站,所展示的游戏/软件/文章内容均来自于互联网或第三方用户上传分享,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系youleyoucom@outlook.com。

同类文章
更多
生产环境MySQL为何不建议使用过多触发器

生产环境MySQL为何不建议使用过多触发器

生产环境触发器过多易引发长事务、死锁和主从延迟,且问题隐蔽,慢SQL日志无法定位触发器内部语句。高并发下触发器逐行同步执行,串行化写入链路,性能急剧下降。替代方案如应用层封装、Canal异步落库等更可靠。

时间:2026-07-18 20:11
Redis集群SSL/TLS加密传输配置方法

Redis集群SSL/TLS加密传输配置方法

为Redis集群启用TLS,所有节点必须统一开启,版本、证书、配置缺一不可。Redis6及以上版本需编译支持TLS,且OpenSSL版本不低于1 1 1,所有节点共用同一CA证书文件。配置需设置tls-cert-file、tls-key-file等五项参数,并禁用明文端口。客户端连接时需指定CA证书,证书更新需逐节点滚动重启。

时间:2026-07-18 20:11
MySQL两阶段提交协调机制详解

MySQL两阶段提交协调机制详解

MySQL的提交通过两阶段提交实现:准备阶段将重做日志标记为准备并刷盘,提交阶段二进制日志写入成功后才通知InnoDB引擎更新日志状态。崩溃恢复时比对事务标识,两者一致才提交,否则回滚。配置参数不当会破坏一致性。

时间:2026-07-18 20:10
MySQL中DELETE比TRUNCATE更易产生锁等待的原因

MySQL中DELETE比TRUNCATE更易产生锁等待的原因

MySQL中DELETE属DML操作,逐行加行级锁并写undo日志,事务提交前持续持有锁,易引发锁等待;TRUNCATE属DDL操作,仅瞬时持表级锁并隐式提交,锁等待近乎为零,但存在不可回滚、自增重置、触发器失效及外键拒绝等语义差异。

时间:2026-07-18 20:10
Spring Boot导出Excel时SQL排序注入点修复方法

Spring Boot导出Excel时SQL排序注入点修复方法

在SpringBoot导出Excel中,SQL排序注入因ORDERBY无法参数化而高发,唯一可靠防护是白名单硬编码校验字段名与排序方向,别名也需独立白名单,拒绝用户输入直接拼接,确保所有导出入口均经过统一校验。

时间:2026-07-18 20:10
热门专题
更多
刀塔传奇破解版无限钻石下载大全 刀塔传奇破解版无限钻石下载大全
洛克王国正式正版手游下载安装大全 洛克王国正式正版手游下载安装大全
思美人手游下载专区 思美人手游下载专区
好玩的阿拉德之怒游戏下载合集 好玩的阿拉德之怒游戏下载合集
不思议迷宫手游下载合集 不思议迷宫手游下载合集
百宝袋汉化组游戏最新合集 百宝袋汉化组游戏最新合集
jsk游戏合集30款游戏大全 jsk游戏合集30款游戏大全
宾果消消消原版下载大全 宾果消消消原版下载大全
  • 热门数据榜