MySQL 安全防护

一、配置添加新用户密码复杂度检查

二、配置密码过期策略

三、MySQL数据库限制多次登录失败重试时间


一、配置密码复杂度检查

1.mysql 5.7.15版本好像默认启用了密码复杂度设置,插件名字叫做 validate_password

mysql>>INSTALL PLUGIN validate_password SONAME 'validate_password.so';


2、加上/etc/my.cnf配置

[mysqld]

plugin-load=validate_password.so

validate_password_policy=2 

# 0 or LOW 仅需需符合密码长度

# 1 or MEDIUM 满足LOW策略,同时还需满足至少有1个数字,小写字母,大写字母和特殊字符

# 2 or STRONG 满足MEDIUM策略,同时密码不能存在字典文件(dictionary file)中

validate-password=FORCE_PLUS_PERMANENT


3.重启MySQL

systemctl restart mysqld.service


二、配置密码定期更换

定期更换口令策略:由于定期修改密码,会涉及到应用一块更改,涉及到应用重启,不建议定期修改密码。

1、在/etc/my.cnf配置文件中增加

[mysqld]

default_password_lifetime=90  # 90天过期


2、重启MySQL

systemctl restart mysqld.service

三、MySQL数据库限制多次登录失败重试时间

需求:

如果连续5次输入密码错误,限制登录数据库30分钟  --次数和限制时间可以根据实际变更


解决方法(通过MySQL插件控制)

1、登录数据库,安装插件(CONNECTION_CONTROL和CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS)

mysql -uroot -p


install plugin CONNECTION_CONTROL soname 'connection_control.so';

install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';


2、查看所有已安装的插件

show plugins;


3、按需修改配置文件(/etc/my.cnf)

vim /etc/my.cnf


添加如下两行配置:

connection-control-failed-connections-threshold=5   #登陆失败次数限制

connection-control-min-connection-delay=1800000    #限制重试时间,此处为毫秒,注意按需求换算


重新启动MySQL(根据版本选择重启命令)

service mysqld restart 或 service mysql restart


4、重新登录数据库,查看配置是否生效

mysql -uroot -p

show variables like '%connection_control%';


5、验证

输错5次密码后,会发现第6次登录会卡住,限制登录,时间为设定的限制时间30分钟


请使用浏览器的分享功能分享到微信等