如何启用密码复杂度策略_mysql安全配置

来源:这里教程网 时间:2026-02-28 20:34:24 作者:

MySQL 默认不强制密码复杂度,需手动启用并配置验证插件。核心是加载

validate_password
插件,并设置对应系统变量。

确认并加载 validate_password 插件

该插件是 MySQL 官方提供的密码强度校验模块,5.7 及以上版本自带(8.0 默认启用)。先检查是否已安装:

登录 MySQL 后执行:
SHOW PLUGINS;
,查找
validate_password
若未激活,运行:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';
(Linux)或
'validate_password.dll'
(Windows)
验证是否生效:
SELECT PLUGIN_NAME, PLUGIN_STATUS FROM INFORMATION_SCHEMA.PLUGINS WHERE PLUGIN_NAME = 'validate_password';
,状态应为
ACTIVE

配置密码复杂度规则

通过修改全局系统变量控制策略强度,常用参数包括:

validate_password.policy
:策略等级(0=LOW,1=MEDIUM,2=STRONG),建议设为 1 或 2
validate_password.length
:最小长度(默认 8,建议 ≥12)
validate_password.mixed_case_count
:至少包含大写+小写字母的个数(如设为 1,表示必须含至少 1 个大写和 1 个小写)
validate_password.number_count
:至少包含数字的个数(建议 ≥1)
validate_password.special_char_count
:至少包含特殊字符的个数(如
!@#$%
等,建议 ≥1)

设置示例(临时生效):

SET GLOBAL validate_password.policy = 2;<br>
SET GLOBAL validate_password.length = 12;<br>
SET GLOBAL validate_password.mixed_case_count = 1;<br>
SET GLOBAL validate_password.number_count = 1;<br>
SET GLOBAL validate_password.special_char_count = 1;

如需永久生效,将上述变量写入

my.cnf
(Linux)或
my.ini
(Windows)的
[mysqld]
段下,然后重启 MySQL 服务。

验证策略是否起作用

新建用户或修改密码时会自动校验。例如执行:

CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'abc123';

若密码太弱(如无大写、无特殊符、长度不足),会报错:
ERROR 1819 (HY000): Your password does not satisfy the current policy requirements

也可用内置函数测试:

SELECT VALIDATE_PASSWORD_STRENGTH('MyPass123!');
返回 0–100 的强度分值。

注意事项与兼容性

MySQL 8.0 中插件名改为

validate_password
(旧版 5.7 也支持),但部分云数据库(如阿里云 RDS、腾讯云 CDB)可能禁用该插件或限制参数修改,需查阅对应平台文档。

策略仅影响新设/修改的密码,不会强制已有用户改密;若需批量加固,需结合

ALTER USER ... IDENTIFIED BY
逐个更新。

避免将策略设得过于严苛(如要求 4 类字符+长度 20),以免运维操作受阻或引发应用连接失败。

相关推荐