MySQL 提供内置的验证密码插件,可以显著提升密码的安全性。

设置步骤

首先,编辑配置文件:

vi /etc/my.cnf

然后在 [mysqld] 部分添加以下内容:

plugin-load-add=validate_password.so
validate-password=FORCE_PLUS_PERMANENT
validate_password_policy=MEDIUM
validate_password_check_user_name=1

接着重启 MySQL 服务:

systemctl restart mysqld

验证插件是否生效

可以通过以下 SQL 语句检查插件是否已经激活:

SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME LIKE '%validate_password%';

结果应显示插件为“ACTIVE”。

另外,可以通过以下命令查看密码验证的具体设置:

show global variables like 'validate%';

常见配置项

  • validate_password_check_user_name=1:禁止使用与用户名相同或相反的密码。
  • validate_password_length=8:密码长度至少为 8 个字符。
  • validate_password_mixed_case_count=1:密码至少包含一个大写和一个小写字母。
  • validate_password_number_count=1:密码至少包含一个数字。
  • validate_password_special_char_count=1:密码至少包含一个特殊字符。
  • validate_password_policy=MEDIUM:密码强度为中等。

实际测试

尝试设置不符合规则的密码:

set password = '123456';

结果将会报错:

ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

通过上述步骤,MySQL 的密码安全性得到了有效提升,避免了简单密码带来的安全风险。