MySQL用戶密碼過期登陸報錯ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.


 今天接到主從復制失敗告警,查看MySQL,發現MySQL能夠登陸但是執行命令報錯,

ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

 

因為是用戶密碼過期了

解決辦法:

登陸MySQL命令行,執行

set password=password("password");

flush privileges;

#設置用戶密碼永不過期
ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER;
查看用戶密碼默認過期時間設置,默認360天
mysql> show global variables like "default_password_lifetime"; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | default_password_lifetime | 360 | +---------------------------+-------+ 1 row in set (0.00 sec) 設置用戶密碼永不過期(臨時生效) mysql> SET GLOBAL default_password_lifetime = 0; Query OK, 0 rows affected (0.00 sec) mysql> show global variables like "default_password_lifetime"; +---------------------------+-------+ | Variable_name | Value | +---------------------------+-------+ | default_password_lifetime | 0 | +---------------------------+-------+ 1 row in set (0.00 sec)
如果要設置密碼永不過期,設置my.cnf
vi /etc/my.cnf
添加
#設置用戶密碼永不過期
default_password_lifetime=0

這樣重啟后也是沒問題的

 

查看用戶密碼設置
mysql> select user,host,password_expired,password_last_changed,password_lifetime from mysql.user; +----------------+-----------+------------------+-----------------------+-------------------+ | user | host | password_expired | password_last_changed | password_lifetime | +----------------+-----------+------------------+-----------------------+-------------------+ | root | localhost | N | 2018-01-05 16:54:02 | 0 | | mysql.sys | localhost | N | 2017-01-07 16:49:55 | NULL | | root | % | N | 2017-01-12 17:21:08 | NULL | | zabbix_monitor | localhost | N | 2017-05-08 09:45:40 | NULL | +----------------+-----------+------------------+-----------------------+-------------------+ 6 rows in set (0.00 sec)

 

創建一個有效期30天的用戶
create user tt@'%' identified by '123456' password expire interval 30 day;

mysql> select user,host,password_expired,password_last_changed,password_lifetime from mysql.user;
+-----------+------------+------------------+-----------------------+-------------------+
| user      | host       | password_expired | password_last_changed | password_lifetime |
+-----------+------------+------------------+-----------------------+-------------------+
| root      | localhost  | N                | 2017-12-28 15:59:39   |              NULL |
| mysql.sys | localhost  | N                | 2017-12-28 11:42:12   |              NULL |
| mysync    | 10.73.86.% | N                | 2017-12-28 16:11:49   |              NULL |
| tt        | %          | N                | 2018-01-08 12:59:08   |                30 |
+-----------+------------+------------------+-----------------------+-------------------+

 

 

 

參考

mysql-5.7 密碼過期詳解 http://www.mamicode.com/info-detail-2042849.html

Mysql 5.7 賬戶過期設置 - CSDN博客 http://blog.csdn.net/jc_benben/article/details/77934469


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM