mysql 8.0如何强制用户下次登录必须改密码

来源:Nodejs社区作者:森沢头衔:网络博主
导读:本期聚焦于小伙伴创作的《mysql 8.0如何强制用户下次登录必须改密码》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《mysql 8.0如何强制用户下次登录必须改密码》有用,将其分享出去将是对创作者最好的鼓励。

在mysql 8.0的数据库管理中,通过PASSWORD EXPIRE选项可以灵活控制用户密码的有效期,强制用户下次登录时修改密码是提升数据库安全性的常用操作,能够有效避免长期使用固定密码带来的安全风险。

PASSWORD EXPIRE选项的作用

PASSWORD EXPIRE是mysql中用于控制用户密码过期策略的选项,当设置用户密码过期后,用户下次登录数据库时会被要求立即修改密码,否则无法正常执行数据库操作。该选项支持在创建用户、修改用户属性时配置,也可以设置全局的密码过期策略。

创建用户时强制下次登录改密码

在创建新用户的时候,可以直接附带PASSWORD EXPIRE选项,让该用户首次登录就必须修改密码。具体语法如下:

-- 创建用户并强制下次登录改密码
CREATE USER 'test_user'@'localhost' IDENTIFIED BY 'InitPass123!' PASSWORD EXPIRE;

上述语句创建了用户名为test_user、允许本地登录的用户,初始密码为InitPass123!,同时设置PASSWORD EXPIRE,该用户首次登录时就会被要求修改密码。

修改已有用户强制下次登录改密码

如果已经存在用户,需要强制其下次登录修改密码,可以通过ALTER USER语句修改用户的密码过期属性:

-- 修改已有用户,强制下次登录改密码
ALTER USER 'old_user'@'localhost' PASSWORD EXPIRE;

执行该语句后,old_user用户下次登录mysql时就会触发密码修改要求。

设置密码过期时间策略

除了直接强制下次登录改密码,还可以设置密码的过期天数,让密码在指定天数后自动过期,用户登录时就需要修改密码。可以通过全局变量default_password_lifetime设置,也可以在用户级别单独设置。

全局密码过期策略配置

设置全局密码90天过期:

-- 设置全局密码90天过期,0表示密码永不过期
SET GLOBAL default_password_lifetime = 90;
-- 永久生效需要写入配置文件
-- [mysqld]
-- default_password_lifetime=90

用户级别单独设置过期时间

为用户单独设置密码30天过期:

ALTER USER 'test_user'@'localhost' PASSWORD EXPIRE INTERVAL 30 DAY;

也可以设置用户密码永不过期:

ALTER USER 'test_user'@'localhost' PASSWORD EXPIRE NEVER;

查看用户密码过期状态

可以通过查询mysql.user系统表来查看用户的密码过期相关信息,主要字段包括password_lifetimepassword_expired

-- 查看用户密码过期状态
SELECT user, host, password_lifetime, password_expired 
FROM mysql.user 
WHERE user = 'test_user';

其中password_expired为Y表示该用户密码已过期,为N表示未过期;password_lifetime为密码的有效天数,NULL表示使用全局策略。

密码过期后的登录与修改操作

当用户密码过期后,使用原密码登录mysql时,只能执行修改密码的操作,其他操作会被拒绝,提示密码已过期。修改密码的语句如下:

-- 密码过期后登录,执行修改密码操作
ALTER USER USER() IDENTIFIED BY 'NewPass456!';

修改完成后,用户就可以正常使用新密码执行各类数据库操作了。

注意事项

  • 设置PASSWORD EXPIRE选项需要有mysql的CREATE USER或者ALTER USER权限,一般只有管理员账户可以操作。
  • 密码修改需要符合mysql的密码强度策略,如果密码过于简单会修改失败,需要先调整密码策略或者设置符合要求的密码。
  • 如果设置了全局密码过期策略,新创建的用户会默认继承该策略,除非在创建时单独指定PASSWORD EXPIRE属性。

mysql_8.0PASSWORD_EXPIRE用户密码管理数据库安全修改时间:2026-07-06 11:45:23

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。