主要用于防止暴力破解,同一个用户登录达到一定次数后,将对该账户进行锁定。
需要用到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)。