首页 > 编程笔记 > MySQL笔记 阅读:3

MySQL设置密码过期的3种方法(附带实例)

MySQL 中,数据库管理员可以手动设置密码过期,也可以建立一个自动密码过期策略。密码过期策略既可以是全局的,也可以为每个用户单独设置。

设置密码立即过期

手动设置密码立即过期,可以使用如下 SQL 语句:
mysql> ALTER USER user PASSWORD EXPIRE;

例如,将 zhang3 用户的密码设置为立即过期,具体 SQL 语句如下所示:
mysql> ALTER USER 'zhang3'@'localhost' PASSWORD EXPIRE;

虽然上述语句将 zhang3 用户的密码设置为立即过期,但 zhang3 用户仍然可以登录 MySQL 服务器,进入数据库,只是无法执行查询操作。密码过期后,必须重新设置密码,否则会报如下错误信息:
mysql> SHOW DATABASES;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

设置密码指定时间过期

如果密码使用时间长于允许时间,那么服务器会自动将其设置为过期,不需要手动设置。

MySQL 使用系统变量 default_password_lifetime 建立全局密码过期策略:
建立全局密码过期策略的方式有两种:
1) 使用 SET 语句更改系统变量 default_password_lifetime 的值并持久化。
SET PERSIST default_password_lifetime = 180; #建立全局密码过期策略,设置密码每隔180天过期

2) 在 my.cnf 配置文件中进行维护:
[mysqld]
default_password_lifetime=180  #建立全局密码过期策略,设置密码每隔180天过期

单个用户密码过期设置

每个用户既可以沿用全局密码过期策略,也可以单独设置密码过期策略。

在 CREATE USER 和 ALTER USER 语句中加入 PASSWORD EXPIRE 选项,即可实现单独用户密码过期策略设置。下面是一些语句示例:
# 设置 zhang3 用户的密码每隔 90 天过期
CREATE USER 'zhang3'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
ALTER USER 'zhang3'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;

# 设置密码永不过期
CREATE USER 'zhang3'@'localhost' PASSWORD EXPIRE NEVER;
ALTER USER 'zhang3'@'localhost' PASSWORD EXPIRE NEVER;

# 沿用全局密码过期策略
CREATE USER 'zhang3'@'localhost' PASSWORD EXPIRE DEFAULT;
ALTER USER 'zhang3'@'localhost' PASSWORD EXPIRE DEFAULT;

相关文章