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

MySQL密码定期更换的方法(附带实例)

MySQL 8.0 允许数据库管理员手动设置账户密码的过期时间,任何密码超期的账户想要连接服务端时都必须更改密码。

在 MySQL 中,通过设置 default_password_lifetime 参数,可以设置账户过期时间。

下面通过示例来学习。首先查看系统中的账户过期时间。输入语句如下:
mysql> SELECT user,host, password_last_changed, password_lifetime, password_expired FROM
mysql.user \G
*************************** 1. row ***************************
             user: grantUser
             host: localhost
password_last_changed: 2022-03-27 12:02:09
password_lifetime: NULL
  password_expired: N
*************************** 2. row ***************************
             user: jeffrey
             host: localhost
password_last_changed: 2022-03-27 12:00:40
password_lifetime: NULL
  password_expired: N
*************************** 3. row ***************************
         user: mysql.infoschema
         host: localhost
password_last_changed: 2022-03-27 11:43:30
password_lifetime: NULL
password_expired: N
*************************** 4. row ***************************
         user: mysql.session
         host: localhost
password_last_changed: 2022-03-27 11:43:30
password_lifetime: NULL
password_expired: N
*************************** 5. row ***************************
         user: mysql.sys
         host: localhost
password_last_changed: 2022-03-27 11:43:30
password_lifetime: NULL
password_expired: N
*************************** 6. row ***************************
         user: root
         host: localhost
password_last_changed: 2022-03-27 11:43:50
password_lifetime: NULL
password_expired: N
在这个结果中,password_lifetime: NULL 表示密码永不过期。

下面设置 root 用户的密码过期时间为 365 天,输入语句如下:
mysql> ALTER USER root@localhost PASSWORD EXPIRE INTERVAL 365 DAY;
Query OK, 0 rows affected (0.00 sec)
再次查看 root 用户的信息,输入语句如下:
mysql>SELECT user,host, password_last_changed, password_lifetime, password_expired FROM
mysql.user WHERE user = 'root'\G
*************************** 1. row ***************************
             user: root
             host: localhost
password_last_changed: 2022-03-27 14:10:08
password_lifetime: 365
  password_expired: N
1 row in set (0.00 sec)
从结果可以看出,root 用户的 password_lifetime 已经被修改为 365 天。

将 root 用户的密码过期重新设置为永不过期,输入语句如下:
mysql> ALTER USER root@localhost PASSWORD EXPIRE DEFAULT;
Query OK, 0 rows affected (0.00 sec)
再次查看 root 用户的信息,输入语句如下:
mysql> SELECT user,host, password_last_changed, password_lifetime, password_expired FROM
mysql.user WHERE user = 'root'\G
*************************** 1. row ***************************
             user: root
             host: localhost
password_last_changed: 2022-03-27 11:43:50
password_lifetime: NULL
password_expired: N
1 row in set (0.00 sec)
从结果可以看出,password_lifetime 又被重新设置为 NULL,此时该用户的密码将永不过期。

相关文章