mysql应对登录的用户进行身份标识和鉴别,身份标识具有唯一性,鉴别信息具有复杂度要求并定期更换,对于口令的具体要求如下:
1) 长度不小于 8 位;
2) 由大小写字母、数字和特殊字符组成;
3) 不得与账户名相同;
4) 不得明文存储;
5) 至少每半年更换一次;
不影响已有账号
1.检查密码验证插件
SHOW VARIABLES LIKE 'validate_password%';
如果未启用,可以通过以下命令启用:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
2.配置密码策略
你可以设置 MySQL 密码验证插件的策略以满足你的具体需求:
SET GLOBAL validate_password_length = 8; -- 设置密码最小长度为8位
SET GLOBAL validate_password_policy = STRONG; -- 强制要求密码包含大小写字母、数字和特殊字符
STRONG
策略会检查密码长度和字符组合,确保复杂度。
3. 防止密码与账户名相同
MySQL 默认不允许密码和账户名相同,因此无需额外配置。如果需要确保这点,你可以通过创建用户时手动检查,或者在业务逻辑中加入该检查。
4. 防止明文存储密码
MySQL 默认会对密码进行哈希处理存储,符合要求。你不需要额外配置来防止明文存储。
5. 定期更换密码
MySQL 提供了密码过期机制,可以设置密码的最大使用期限。例如,设置密码每 180 天(大约半年)过期:
SET GLOBAL default_password_lifetime = 180;
这样,每个用户的密码将在 180 天后过期,用户必须在下次登录时更改密码。
6. 持久化设置
为了使这些配置在 MySQL 重启后仍然有效,需要将这些设置写入配置文件 my.cnf
或 my.ini
[mysqld]
validate_password_length=8
validate_password_policy=STRONG
default_password_lifetime=180
7. 确保不影响已有账号
这些更改只会影响新创建的用户和密码,以及现有用户在更改密码时。现有的用户和他们当前的密码不会受到影响,直到他们的密码过期或他们决定更改密码。
8. 重新启动 MySQL 服务(如果进行了持久化设置)
如果你修改了 MySQL 配置文件,重新启动 MySQL 服务以应用更改:
在 Linux 系统上:
sudo systemctl restart mysql
在 Windows 系统上:
net stop mysql
net start mysql