mysql通过default_password_lifetime和ALTER USER配置密码过期策略,提升数据库安全;SET GLOBAL设置全局默认过期时间,如90天或0(禁用);ALTER USER可为特定用户设置INTERVAL、NEVER、DEFAULT或立即过期;查看mysql.user表中password_last_changed和password_lifetime字段可获取过期状态;适用于安全加固与密码重置场景。

MySQL 中配置密码过期策略可以通过设置全局或用户的密码过期时间来实现,帮助提升数据库安全性。主要通过 default_password_lifetime 系统变量和 ALTER USER 语句进行管理。
启用并设置默认密码过期时间
从 MySQL 5.7.11 开始,默认密码生命周期为 360 天(即默认开启)。你可以修改全局设置来调整所有新用户的默认过期策略。
— 设置默认密码有效期为 90 天
SET GLOBAL default_password_lifetime = 90;
如果想禁用自动过期,设为 0:
SET GLOBAL default_password_lifetime = 0;
该设置会影响之后创建的用户(除非显式指定例外)。
为特定用户设置密码过期
可以对个别用户单独设置密码过期策略,适用于需要更严格安全控制的账户。
— 设置用户 test_user@localhost 密码每 60 天必须更换
ALTER USER ‘test_user’@’localhost’ PASSWORD EXPIRE INTERVAL 60 DAY;
其他常见设置方式:
- PASSWORD EXPIRE NEVER:禁用密码过期
- PASSWORD EXPIRE DEFAULT:使用全局默认策略
- PASSWORD EXPIRE:立即过期,下次登录强制修改
强制密码立即过期(用于重置场景)
当怀疑账户泄露或需要用户重新设置密码时,可手动触发过期:
ALTER USER ‘admin’@’%’ PASSWORD EXPIRE;
用户下次登录时会被提示错误,并要求执行 SET PASSWORD 修改密码才能继续操作。
查看用户密码过期状态
可通过查询 mysql.user 表获取相关字段信息:
select user, host, password_last_changed, password_lifetime FROM mysql.user WHERE user = ‘your_user’;
注意:具体字段名可能因版本略有差异,MySQL 8.0+ 推荐使用 information_schema 或性能模式视图辅助分析。
基本上就这些。合理配置密码过期策略能有效提升数据库安全,建议结合实际运维需求设定周期,并提醒用户及时更新密码。


