本次以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