MySQL从5.7.11起支持密码有效期设置,可通过ALTER USER指定用户密码过期时间,如90天后过期;可设永不过期或使用默认策略;通过SET GLOBAL default_password_lifetime设置全局有效期,如60天,并可在配置文件中持久化;创建用户时可直接设定密码有效期;也可强制用户登录时修改密码,提升安全性。
MySQL 支持设置用户密码的有效期,用来强制用户定期修改密码以增强安全性。从 MySQL 5.7.11 版本开始,引入了原生的密码过期策略功能。以下是配置 MySQL 密码有效期的方法。
示例:设置密码90天后过期
ALTER USER 'username'@'host' PASSWORD EXPIRE INTERVAL 90 DAY;
如果想让某个用户不受有效期限制,可设置为永不过期:
ALTER USER 'username'@'host' PASSWORD EXPIRE NEVER;
或者使用默认策略:
ALTER USER 'username'@'host' PASSWORD EXPIRE DEFAULT;
设置全局密码有效期为60天:
SET GLOBAL default_password_lifetime = 60;
注意:该设置仅对之后创建或修改为使用默认策略的用户生效。
你也可以在配置文件中永久设置:
# 编辑 my.cnf 或 my.ini 文件 [mysqld] default_password_lifetime = 60
修改后重启 MySQL 服务使配置生效。
示例:创建一个60天后密码过期的用户
CREATE USER 'testuser'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE INTERVAL 60 DAY;
命令如下:
ALTER USER 'username'@'localhost' PASSWORD EXPIRE;
用户登录时会提示:
Your password has expired. To log in you must change it using a client that supports expired passwords.
此时需执行:
ALTER USER USER() IDENTIFIED BY 'new_password';
基本上就这些。合理设置密码有效期有助于提升数据库安全,尤其适用于企业级应用环境。