Mysql登录失败多次锁定配置

Posted 治恒说说

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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%';

Mysql登录失败多次锁定配置

图二

可以看到已有的默认配置:

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登录失败多次锁定配置

图三

可以看到已经是我们配置的值了。

验证

Mysql登录失败多次锁定配置

图四

如【图四】输错三次密码之后,第四次程序已经锁住了。

参考和相关链接

MySQL数据库限制多次登录失败重试时间:https://blog.csdn.net/ywd1992/article/details/83865537

MySQL 插件之连接控制插件:https://www.cnblogs.com/zhenxing/p/11050823.html