跳转到主内容
极星编程网:以代码为星,赴技术山海!

如何设置密码过期策略_mysql账户安全管理

MySQL 8.0+原生支持密码过期策略,可通过ALTER USER设置账户级过期(立即、定时或永不过期),或通过default_password_lifetime配置全局默认有效期,并需结合validate_password组件强化密码强度校验。 MySQL 8.0 及以上版本原生支持密码过期策略,可通过
ALTER USER
或用户创建时直接设定,核心是控制
PASSWORD EXPIRE
属性和全局/账户级策略。 设置单个账户密码强制过期 适用于高权限或临时账号,到期后首次登录必须修改密码:
ALTER USER 'admin'@'localhost' PASSWORD EXPIRE;
—— 立即过期
ALTER USER 'dev'@'%' PASSWORD EXPIRE INTERVAL 90 DAY;
—— 90天后自动过期
ALTER USER 'backup'@'10.0.2.%' PASSWORD EXPIRE NEVER;
—— 取消过期(谨慎使用) 配置全局默认密码有效期 影响后续新建账户(除非显式覆盖),需有
SUPER
或
SYSTEM_VARIABLES_ADMIN
权限: MySQL(Linux) MySQL 9.6.0是面向Linux平台的2026年创新版本,核心架构迎来重大革新。其将外键约束与级联操作从InnoDB引擎层上移至SQL层,确保所有数据变更均被完整记录至Binlog,彻底解决了CDC(变更数据捕获)与主从复制中的数据不一致难题。此外,该版本引入container_aware启动选项以原生适配容器环境,并对审计日志进行了组件化重构,为追求极致数据一致性与云原生体验的开发者提供了全新选择。 下载 查看当前设置:
SELECT @@default_password_lifetime;
(默认值为 0,表示永不过期) 设为180天:
SET PERSIST default_password_lifetime = 180;
永久生效需写入 配置文件 (
my.cnf
): [mysqld]default_password_lifetime = 180 检查与验证密码状态 确认策略是否生效,避免误配导致业务中断: 查指定用户过期时间:
SELECT user, host, password_last_changed, password_expired FROM mysql.user WHERE user = 'app_user';
登录后若提示
Your password has expired...
,说明策略已触发,必须执行
ALTER USER ... IDENTIFIED BY 'newpass';
注意:仅对启用认证插件(如
caching_sha2_password
)的账户有效;旧版
mysql_native_password
在某些版本中可能不完全兼容 配合密码强度策略使用 单独设过期不够,建议同步开启密码复杂度校验: 启用组件:
INSTALL COMPONENT "file://component_validate_password";
设置规则:
SET PERSIST validate_password.policy = MEDIUM;
(要求大小写字母+数字+特殊字符) 这样 密码重置 时也会被强度规则拦截,防止用户设弱密码“应付”过期要求

相关文章