Mysql登录失败多次锁定配置
大家有没有发现,现在我们用的手机,网站只要需要登录或者认证的,都有这样一项功能,密码或口令输错几次后系统锁定N分钟,并提示N分钟过后重试,有时候会很头疼,万一忘记了密码,只能填一堆信息重新获取,当然这也是对安全的考虑,其实在等保测评中,也有类似的要求,今天我们来学习一下MySQL是如何设置登录多次失败锁定的。
Tips:示例是以 Mysql 5.7 为例
需求
Mysql 数据库密码数据 3 次,自动锁定15分钟。
查看配置
首先使用下面命令查看参数是否设置
show variables like '%connection_control%';
如果看到Empty set (0.01 sec)
的字样,说明没有设置该参数;再查看是否安装 CONNECTION_CONTROL 和 CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS 插件。
•CONNECTION_CONTROL:用来控制登录失败的次数及延迟响应时间。•CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS:该表将登录失败的操作记录至IS库中。
show plugins;
如果插件列表中没有【图一】中的勾出的两项,需要安装插件;
安装插件
install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';
执行完之后,再次查看插件列表,会出现【图一】中勾出的两项;现在再次查看connection_control
的参数:
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秒
配置
方式一:修改配置文件 my.cnf
vim /etc/my.cnf
# 添加下面两项
connection-control-failed-connections-threshold=3 #登陆失败次数限制
connection-control-min-connection-delay=900000 #限制重试时间,此处为毫秒,注意按需求换算
重启 MySQL 服务service mysqld restart
或 service mysql restart
方式二:设置全局变量
SET GLOBAL connection_control_failed_connections_threshold = 3;
SET GLOBAL connection_control_min_connection_delay = 900000;
配置完成,再次使用show variables like '%connection_control%';
查看参数:
可以看到已经是我们配置的值了。
验证
如【图四】输错三次密码之后,第四次程序已经锁住了。
参考和相关链接
MySQL数据库限制多次登录失败重试时间:https://blog.csdn.net/ywd1992/article/details/83865537
MySQL 插件之连接控制插件:https://www.cnblogs.com/zhenxing/p/11050823.html