身份鉴别
a)应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,身份鉴别信息具有复杂度要求并定期更换。
密码有效期:由于mysql5.6.51没有default_password_lifetime 函数所以我们可以使用脚本来实现密码更换日期
#!/bin/bash
# MySQL登录信息
MYSQL_USER="your_mysql_user"
MYSQL_PASSWORD="your_mysql_password"
# 过期密码的 SQL 查询
QUERY="SELECT user FROM mysql.user WHERE password_expired = 'N' AND password_last_changed < (NOW() - INTERVAL 30 DAY);"
# 连接到 MySQL 并执行查询
PASSWORDS_TO_EXPIRE=$(mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "$QUERY" | tail -n +2)
# 循环过期密码并让其过期
for USER in $PASSWORDS_TO_EXPIRE
do
mysql -u"$MYSQL_USER" -p"$MYSQL_PASSWORD" -e "ALTER USER '$USER' PASSWORD EXPIRE;"
done
crontab -e //使用 cron 定时任务来每隔 30 天运行该脚本
0 0 1 * * /path/to/expire_passwords.sh //这样设置后,每个月的第一天脚本就会执行,检查并将所有密码超过 30 天的用户密码设置为过期状态。
密码复杂度设置:
SET GLOBAL validate_password_length = 8;
//设置mysql的密码长度最小为8位
SET GLOBAL validate_password_number_count = 1;
//设置密码必须包含一个数字
SET GLOBAL validate_password_mixed_case_count = 0;
//设置为 0 表示大小写不敏感;若为1则表示必须包含一个大写字母和一个小写字母。
SET GLOBAL validate_password_special_char_count = 1;
//密码中必须包含至少一个特殊字符。
b) 应具有登录失败处理功能,应配置并启用结束会话、限制非法登录次数和当登录连接超时自动退出等相关措施;
设置连接超时
vim /etc/my.cnf
[mysqld]
connect_timeout = 100
//在my.cnf这个配置文件里面写入连接超时时间,单位为秒
设置登录次数限制
SET GLOBAL max_connect_errors = 10; //设