新安裝mysql後,登入後,執行任何指令都會報錯:
You must reset your password using ALTER USER statement before executing this statement.

【解決辦法】
MySQL版本5.7.6版本以前使用者可以使用如下指令:
mysql> SET PASSWORD = PASSWORD('root2019');
MySQL版本5.7.6版本開始的使用者可以使用如下指令:
mysql> ALTER USER USER() IDENTIFIED BY 'root2019';
出現這種情況的原因:
MySQL版本5.6.6版本起,添加了password_expired功能,它允許設定使用者的過期時間。這個特性已經添加到mysql.user資料表,但是它的預設值是”N”,可以使用ALTER USER語句來修改這個值。
輸入以下指令,将賬号密碼強制到期:
mysql> ALTER USER 'yonghuming'@'localhost' PASSWORD EXPIRE;
此時,使用者可以登入到MYSQL伺服器,但是在使用者沒有設定新密碼之前,不能運作任何指令,就會得到上圖的報錯,修改密碼即可正常運作賬戶權限内的所有指令。由于此版本密碼過期天數無法通過指令來實作,是以DBA可以通過cron定時器任務來設定MySQL使用者的密碼過期時間。
MySQL 5.7.4版開始,使用者的密碼過期時間這個特性得以改進,可以通過一個全局變量default_password_lifetime來設定密碼過期的政策,此全局變量可以設定一個全局的自動密碼過期政策。可以在MySQL的my.ini配置檔案中設定一個預設值,這會使得所有MySQL使用者的密碼過期時間都為120天,MySQL會從啟動時開始計算時間。my.ini配置如下:
[mysqld]
default_password_lifetime=120
如果要設定密碼永不過期,my.cnf配置如下:
default_password_lifetime=0
如果要為每個具體的使用者賬戶設定單獨的特定值,可以使用以下指令完成(注意:此指令會覆寫全局政策),機關是“天”,指令如下:
ALTER USER ‘yonghuming’@‘localhost' PASSWORD EXPIRE INTERVAL 250 DAY;
如果讓使用者恢複預設政策,指令如下:
ALTER USER 'yonghuming'@'localhost' PASSWORD EXPIRE DEFAULT;
個别使用者為了後期麻煩,會将密碼過期功能禁用,指令如下:
ALTER USER 'yonghuming'@'localhost' PASSWORD EXPIRE NEVER;