mysql服务CONNECTION_CONTROL和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS插件安装及注意事项

时间:2024-02-21 18:57:14

本次以Mysql5.7.32为例(5.7.X默认带这个插件的,默认不开启)

支持动态安装

-- 进入数据库执行下面两个SQL

INSTALL PLUGIN CONNECTION_CONTROL SONAME \'connection_control.so\'; INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME \'connection_control.so\';

验证安装之后是否已经启用

如下图显示表示一起用

-- 查看所有插件
show plugins;

 

 

查看开启后默认参数

show variables like \'connection_control%\';

 

 参数解释:

connection_control_failed_connections_threshold:失败尝试的次数,默认为3,表示当连接失败3次后启用连接控制,0表示不开启

connection_control_max_connection_delay:响应延迟的最大时间,默认约25天
connection_control_min_connection_delay:响应延迟的最小时间,默认1000微秒,1秒

 

 

参数可通过SET语句直接设置

SET GLOBAL connection_control_failed_connections_threshold = 5;
SET GLOBAL connection_control_min_connection_delay = 30000;
SET GLOBAL connection_control_max_connection_delay = 100000;

 

 

通过配置文件安装

-- my.cnf文件在[mysqld]模块下面添加如下内容,参数自己根据实际情况来

plugin-load-add=connection_control.so connection-control=FORCE connection-control-failed-login-attempts=FORCE connection_control_min_connection_delay= 30000 connection_control_max_connection_delay= 108000 connection_control_failed_connections_threshold=5

--配置好后重启mysql所有服务,按照上面的验证一下是否安装成功

 

注意:connection_control_min_connection_delay所设置的值小于wait_timeout的值,该插件不会生效,务必注意

我这边wait_timeout默认值为28800ms

 

 

验证插件功能

验证方法,用同一个用户,故意用错误密码登录尝试5次(我设置的5次),在第六次时候会处于等待时间,等待时长是connection_control_min_connection_delay这个设置的时间

 

 

 查看错误记录

-- 执行下面这个SQL,看是否有错误记录,错误记录会记录在information_schema.connection_control_failed_login_attempts表
 select * from information_schema.connection_control_failed_login_attempts;

 

 

 

以上操作需要谨慎,没发生意外则正常开启,参考官网:https://dev.mysql.com/doc/refman/5.7/en/connection-control-installation.html