MySQL 默认不启用登录失败锁定机制,需通过 connection_control 插件实现输错 N 次后延迟或拒绝连接;该插件自 5.7.14 引入,支持在线启用,关键参数包括 failed_connections_threshold、min_connection_delay 和 max_connection_delay。

MySQL 默认不启用登录失败锁定机制,要实现“输错 N 次密码后自动延迟响应甚至拒绝连接”,必须依赖 connection_control 插件系列。该功能自 MySQL 5.7.14 起引入,8.0+ 版本完全支持,无需重启服务即可在线启用和调优。
确认版本与插件可用性
先检查 MySQL 版本是否满足最低要求(≥5.7.14):
SELECT VERSION();- 查看插件目录是否存在对应文件:
Linux 下一般为/usr/lib/mysql/plugin/connection_control.so,Windows 为connection_control.dll;可通过SHOW VARIABLES LIKE 'plugin_dir';确认路径 - 执行
SHOW PLUGINS;查看是否已加载,若无则需手动安装
安装并启用 connection_control 插件
在 MySQL 命令行中依次执行(需 SUPER 权限):
INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';- 安装成功后,运行
SHOW VARIABLES LIKE 'connection_%';应能看到相关参数,如connection_control_failed_connections_threshold
配置失败次数与锁定延迟时间
关键参数有三个,单位均为毫秒:
- 失败阈值:
SET GLOBAL connection_control_failed_connections_threshold = 5;(输错 5 次触发限制) - 最小延迟时间:
SET GLOBAL connection_control_min_connection_delay = 300000;(即 5 分钟,第 6 次尝试前强制等待) - 最大延迟时间:
SET GLOBAL connection_control_max_connection_delay = 600000;(防止单次错误累积过久,默认可不设)
注意:这些是会话级动态设置,重启后失效;如需永久生效,需写入 my.cnf 或 my.ini 的 [mysqld] 段:
connection-control-failed-connections-threshold=5<br>connection-control-min-connection-delay=300000<br>connection-control-max-connection-delay=600000
验证与排查方法
配置完成后可快速验证:
- 用错误密码反复登录(如
mysql -u root -p),输错达阈值后下一次连接会明 显卡 顿,耗时约等于min_connection_delay - 查询失败记录:
SELECT * FROM information_schema.connection_control_failed_login_attempts;(该表由插件自动维护) - 若未生效,检查错误日志是否有插件加载失败提示;或确认用户是否使用 socket 连接(部分本地连接可能绕过该控制)






























