必须先启用validate_password插件或组件,否则所有策略参数静默失效;5.7用install plugin,8.0.17+优先用install component,验证均需查plugins表或component表,再set global配置policy、length等参数并写入my.cnf持久化。

必须先启用 validate_password 插件或组件,否则所有策略参数都静默失效——这是 90% 的配置失败根源。
确认 validate_password 是否已加载(别猜版本,直接查)
MySQL 5.7 和 8.0+ 加载机制不同,但验证方式统一且可靠:
- 执行
SELECT * FROM information_schema.plugins WHERE plugin_name = 'validate_password';—— 若返回空行,说明 5.7 未安装或 8.0 未启用插件方式 - 执行
SELECT * FROM mysql.component WHERE component_urn = 'file://component_validate_password';—— 若无结果,说明 8.0.17+ 未安装组件(推荐优先走这步) -
SHOW VARIABLES LIKE 'validate_password%';返回空或只有默认值(如validate_password_length= 8),基本可断定未启用
按版本正确启用:5.7 用 INSTALL PLUGIN,8.0.17+ 优先用 INSTALL COMPONENT
写错加载方式会导致后续所有 SET 操作报错 ERROR 1126 (HY000): Can't open shared library 或直接被忽略:
Word报告自动生成神器。自动生成专业Word文档报告,支持模板填充、目录生成、表格/图表插入、页眉页脚、多级标题、样式主题、批量邮件合并。当用户需要生成Word报告、创建合同文档、批量生成通知/证书、填充Word模板、制作商业计划书时触发。
- MySQL 5.7:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';,然后在my.cnf的[mysqld]下加plugin-load-add=validate_password.so和validate_password=FORCE_PLUS_PERMANENT - MySQL 8.0.17+:
INSTALL COMPONENT 'file://component_validate_password';(注意是单引号 + file:// 前缀);若报错再退回到插件方式 - Windows 用户注意:
SONAME应为'validate_password.dll',不是.so
设置参数时注意 SQL 与配置文件的命名差异
参数名在 SQL 中用下划线分隔,在配置文件中必须去掉下划线且首字母小写,否则完全不生效:
- SQL 中合法:
SET GLOBAL validate_password.length = 12;、SET GLOBAL validate_password.policy = MEDIUM; - 但写入
my.cnf时必须是:validate_password_length = 12、validate_password_policy = MEDIUM(不能写成validate_password.length) -
STRONG级别必须配validate_password.dictionary_file,否则实际等效于MEDIUM;路径需 MySQL 进程有读权限,且文件内容每行一个单词
ALTER USER 报 ERROR 1819?检查 policy 依赖顺序和作用边界
该错误不是随机出现,而是策略校验触发失败的明确信号:
-
policy = LOW时,number_count、special_char_count等参数无效;设为MEDIUM后,这些 count 值才起作用 - 各 count 参数之间有隐含依赖:设
mixed_case_count = 1前,number_count和special_char_count至少得是 1,否则 SET 会直接拒绝 - 策略只对
CREATE USER、ALTER USER ... IDENTIFIED BY、SET PASSWORD生效;root 初始密码、外部认证插件(如auth_pam)用户、已存在的弱密码均不受影响
最易被忽略的是:策略不会自动扫描已有用户,也不会干预首次登录时的强制改密流程(ERROR 1820);它只在你显式调用密码赋值语句时介入。临时 SET 的参数重启后丢失,永久生效必须写进配置文件并确保插件/组件加载成功——这两步缺一不可。










