【mysql】You must reset your password using ALTER USER statement before executing this statement報錯處理

安裝完mysql 之後,登陸以後,不管運行任何命令,總是提示這個

mysql> show databases;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.
mysql> use mysql;
ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement.

解決方式如下:

MySQL版本5.7.6版本以前用戶可以使用如下命令:

mysql> SET PASSWORD = PASSWORD('Xiaoming250'); 

MySQL版本5.7.6版本開始的用戶可以使用如下命令:

mysql> ALTER USER USER() IDENTIFIED BY 'Xiaoming250';

如果不清楚自己是什麼版本,可以將兩條都嘗試一下。

對於出現此種情況,感興趣的同學可以接着往下看,

原因分析:

MySQL版本5.6.6版本起,添加了password_expired功能,它允許設置用戶的過期時間。這個特性已經添加到mysql.user數據表,但是它的默認值是”N”,可以使用ALTER USER語句來修改這個值。

輸入以下命令,將賬號密碼強制到期:

mysql> ALTER USER 'xiaoming'@'localhost' PASSWORD EXPIRE;

此時,用戶可以登錄到MYSQL服務器,但是在用戶爲設置新密碼之前,不能運行任何命令,就會得到上圖的報錯,修改密碼即可正常運行賬戶權限內的所有命令。由於此版本密碼過期天數無法通過命令來實現,所以DBA可以通過cron定時器任務來設置MySQL用戶的密碼過期時間。

MySQL 5.7.4版開始,用戶的密碼過期時間這個特性得以改進,可以通過一個全局變量default_password_lifetime來設置密碼過期的策略,此全局變量可以設置一個全局的自動密碼過期策略。可以在MySQL的my.cnf配置文件中設置一個默認值,這會使得所有MySQL用戶的密碼過期時間都爲120天,MySQL會從啓動時開始計算時間。my.cnf配置如下:

[mysqld]
default_password_lifetime=120

如果要設置密碼永不過期,my.cnf配置如下:

[mysqld]
default_password_lifetime=0

如果要爲每個具體的用戶賬戶設置單獨的特定值,可以使用以下命令完成(注意:此命令會覆蓋全局策略),單位是“天”,命令如下:

ALTER USER ‘xiaoming’@‘localhost' PASSWORD EXPIRE INTERVAL 250 DAY;

如果讓用戶恢復默認策略,命令如下:

ALTER USER 'xiaoming'@'localhost' PASSWORD EXPIRE DEFAULT;

個別使用者爲了後期麻煩,會將密碼過期功能禁用,命令如下:

ALTER USER 'testuser'@'localhost' PASSWORD EXPIRE NEVER;

如想進一步學習請參考guan官網:https://dev.mysql.com/doc/refman/5.7/en/password-management.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章