mysql登录失败次数如何限制_mysql安全策略设置

6次阅读

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

mysql 登录失败次数如何限制_mysql 安全策略设置

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.cnfmy.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 连接(部分本地连接可能绕过该控制)

text=ZqhQzanResources