MySQL支持通过PASSWORD EXPIRE INTERVAL和default_password_lifetime设置密码每90天更换,结合validate_password插件强化复杂度,并用脚本监控过期提醒,提升账户安全。

MySQL本身不直接提供“密码修改频率”的强制策略,比如每隔90天自动要求用户更改密码。但可以通过外部手段或结合数据库账户管理机制来实现类似效果,提升密码安全性。
1. 使用MySQL的密码过期策略(Password Expiration)
从MySQL 5.7版本开始,支持为用户设置密码过期时间,这是实现密码定期更换的核心功能。
手动设置密码过期:
ALTER USER 'username'@'localhost' PASSWORD EXPIRE;执行后,该用户下次登录时会被强制修改密码。
设置固定周期自动过期(如每90天):
ALTER USER 'username'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;设置全局默认过期策略:
在my.cnf配置文件中添加:
[mysqld]default_password_lifetime = 90
这表示所有用户密码每90天必须更新一次。MySQL 8.0之后此参数默认启用。
2. 自动化监控与提醒机制
虽然MySQL能设置过期,但不会主动通知用户。建议结合脚本定期检查即将过期的账户。
查询密码最后修改时间和过期状态:
SELECT User, Host, Password_last_changed, password_expired FROM mysql.user;可编写定时任务(cron job),扫描即将过期的账户并发送邮件提醒管理员或用户。
3. 强化密码安全策略
仅设置修改频率不够,还需配合强密码规则:
- 启用validate_password插件,限制密码复杂度
- 要求包含大小写字母、数字、特殊字符
- 密码长度不少于8位(建议12位以上)
- 避免使用常见词汇或默认密码
安装密码验证插件示例:
INSTALL PLUGIN validate_password SONAME 'validate_password.so';4. 账户管理最佳实践
除了技术设置,管理流程也很关键:
- 定期审计用户列表,删除不再使用的账户
- 最小权限原则:按需分配权限,避免滥用超级用户
- 生产环境禁止远程root登录
- 关键账户变更需记录日志并审批
基本上就这些。通过PASSWORD EXPIRE INTERVAL和default_password_lifetime设置修改频率,再配合强密码策略和运维规范,可以有效提升MySQL的账户安全性。不复杂但容易忽略细节,建议结合监控系统长期维护。










