主要用于防止暴力破解,同一个用户登录达到一定次数后,将对该账户进行锁定。

需要用到MySQL的connection_control插件,这个插件MySQL已经包含在插件目录中,但是需要我们自己加载它。

使用管理员账户登录MySQL,然后加载插件:

install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';

设置插件的参数:

set global connection-control-failed-connections-threshold=3
set global connection-control-min-connection-delay=300000

为了永久生效,加入my.ini配置文件:

plugin-load-add=connection_control.so
connection-control-failed-connections-threshold=3 #登陆失败次数限制
connection-control-min-connection-delay=300000 #限制重试时间,此处为毫秒,注意按需求换算,此处为5分钟

参数解析:

  • connection_control_failed_connections_threshold

    失败登陆次数达到此值后触发延迟。值域:[0, INT_MAX32(2147483647)],0表示关闭此功能。默认值为5。

  • connection_control_max_connection_delay

    登陆发生延迟时,延迟的最大时间;此值必须大于等于connection_control_min_connection_delay。值域:[1,INT_MAX32(2147483647)]。默认值:INT_MAX32。单位:毫秒。

  • connection_control_min_connection_delay

    登陆发生延迟时,延迟的最小时间,此值必须小于等于connection_control_max_connection_delay。值域:[1000, INT_MAX32(2147483647)]。默认值:1000。单位:毫秒。

延迟的时间如何计算

一旦连续的失败登陆次数超过设定阈值,那么就会产生延迟,并且延迟随着失败次数增加而增加,上限为connection_control_max_connection_delay;具体的计算方式如下:MIN ((failed_attempts - threshold) * MIN_DELAY), MAX_DELAY)。

最后修改:2023 年 08 月 02 日
如果觉得我的文章对你有用,请随意赞赏