MySQL 密码过期的修改方法
密码失效
查询 MySQL 异常:
mysql> select host,user from mysql.user limit 1;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
执行以下命令
mysql> SET PASSWORD = PASSWORD('your new password');
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
mysql> flush privileges;
MySQL 设置密码过期时间
mysql> SET GLOBAL default_password_lifetime = 90;
mysql> ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
MySQL 设置密码用不过期
设定密码的有效期为 0,即永不过期。
命令行修改:
mysql> set global default_password_lifetime=0;
配置文件修改(改完后要重启服务才生效):
[mysqld]
default_password_lifetime=0
查看系统参数:
mysql> show global variables like 'default_password_lifetime';
+---------------------------+-------+
| Variable_name | Value |
+---------------------------+-------+
| default_password_lifetime | 0 |
+---------------------------+-------+
1 row in set (0.01 sec)
普通用户过期处理
普通用户一旦过期了,root 用户哪怕修改了它的密码,但是无法触发到过期状态的改变。
而改变过期状态的方法有两种:
使用普通用户登陆后,自己修改密码,也可以改回旧密码:
mysql> set password=password('12345678'); Query OK, 0 rows affected, 1 warning (0.00 sec)
使用 root 用户把过期的值改为 N;
mysql> update mysql.user set password_expired='N' where user='test'; Query OK, 1 row affected (0.01 sec) Rows matched: 1 Changed: 1 Warnings: 0 mysql> flush privileges; Query OK, 0 rows affected (0.00 sec)
root 用户改了状态,记录要 flush 权限不然用普通用户立刻登陆还是不生效的。
查看过期时间
select host,user,password_expired,password_lifetime from mysql.user;
+-----------+-----------+------------------+-------------------+
| host | user | password_expired | password_lifetime |
+-----------+-----------+------------------+-------------------+
| localhost | root | N | 0 |
| % | test | N | 0 |
| % | root | N | NULL |
| localhost | mysql.sys | N | NULL |
+-----------+-----------+------------------+-------------------+
4 rows in set (0.00 sec)
相关文章