mysql数据库用户密码加固策略_实施强密码策略与定期轮换
MySQL密码强度需启用validate_password插件并显式配置参数length≥12、mixed_case_count≥1、number_count≥1、special_char_count≥18.0用component_validate_passwordMariaDB不支持且策略仅对新设/修改密码生效。MySQL 用户密码长度和复杂度怎么设才有效MySQL 本身不内置密码强度校验validate_password 插件是唯一靠谱的防线但默认不启用启了也不一定生效——常见错误是只装插件没调参数或者用老版本5.7.8 之前根本没这功能。实操建议先确认插件已加载SHOW PLUGINS; 查看 validate_password 状态若为 DISABLED执行 INSTALL PLUGIN validate_password SONAME validate_password.so;关键参数必须显式设置不能依赖默认值SET GLOBAL validate_password.length 12;、SET GLOBAL validate_password.mixed_case_count 1;、SET GLOBAL validate_password.number_count 1;、SET GLOBAL validate_password.special_char_count 1;注意兼容性MySQL 8.0 改用组件机制插件名变为 component_validate_password路径和加载方式不同MariaDB 完全不支持该插件得靠应用层或 PAM密码策略只对新设/修改密码生效已有弱密码用户不会被强制重置得手动筛查SELECT user, host FROM mysql.user WHERE LENGTH(authentication_string) ALTER USER 设置密码时为什么报错 ERROR 1819这是 validate_password 插件拦截的典型错误不是语法错而是密码被判定“太简单”。很多人以为加个数字就行其实插件会逐项检查长度、大小写、数字、特殊字符、是否含用户名或主机名。常见踩坑点用单引号包裹密码时多打了空格ALTER USER app% IDENTIFIED BY pass123! ; → 前后空格会被算进长度但校验时可能被 trim导致实际校验失败密码含 MySQL 关键字如 password、user插件会拒绝即使满足长度在非 root 用户下执行 ALTER USER但没被授予 SYSTEM_USER 权限8.0 要求会报错 ERROR 1227容易误判为密码问题临时绕过策略仅限当前 sessionSET SESSION validate_password.policy LOW;但生产环境禁用策略等于开后门不推荐密码定期轮换怎么做才不中断业务MySQL 没有原生密码过期调度ALTER USER ... PASSWORD EXPIRE 只能设单次过期不能自动轮换。硬编码在应用配置里改密码上线就断连是最常见的翻车现场。 橙篇 百度文库发布的一款综合性AI创作工具