本文基于mysql 8.0.13.
插件介绍
MySQL 5.6.35 开始提供Connnection Control 插件;
如果客户端在连续失败登陆一定次数后,那么此插件可以给客户端后续登陆行为的响应增加一个延迟。该插件可以防止恶意暴力破解MySQL账户。该插件包含以下2个组件:
- CONNECTION_CONTROL:检查mysql的刚建立连接的响应是否需要延迟,并且提供一些系统变量和状态参数跑;方便用户配置插件和查看此插件基本的状态。
- CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS:提供了一个INFORMATION_SCHEMA类型的表,用户在此表中可以查看更详细关于登陆失败连接的信息。
基本使用
插件的安装与卸载
安装可以通过配置文件静态安装,也可以在MySQL中动态安装。
静态安装
-- 配置文件增加以下配置
[mysqld]
plugin-load-add = connection_control.so
动态安装
-- 插件动态安装启用
mysql> INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';
mysql> INSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS SONAME 'connection_control.so';
-- 验证是否正常安装
mysql> SHOW PLUGINS;
卸载
-- 插件卸载
UNINSTALL PLUGIN CONNECTION_CONTROL;
UNINSTALL PLUGIN CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS;
更多关于插接件安装/卸载的信息 请点击
插件参数
- connection_control_failed_connections_threshold:失败登陆次数达到此值后触发延迟。
- 值域:[0, INT_MAX32(2147483647)],0表示关闭此功能。
- 默认值:3
- connection_control_max_connection_delay:登陆发生延迟时,延迟的最大时间;此值必须大于等于connection_control_min_connection_delay。