最近更新到MySQL 5.7之后,許多用戶反映出了無法進入數據庫的問題。當您嘗試登錄到服務器(例如通過SSH訪問),并使用mysql命令進行連接時,將會收到以下錯誤信息:
ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)
這個錯誤顯示了在嘗試使用MySQL客戶端(例如從命令行或者其他應用程序)中訪問MySQL服務器時遇到鑒權問題。這是MySQL數據包含登錄憑據的user表所導致的。
解決這個問題的方法是更新MySQL的user表。你可以執行以下命令來打開MySQL Server:
sudo /etc/init.d/mysql stop
這個命令將停止MySQL,讓我們有機會編輯user表。以下是在MySQL Database啟動后更新user表方法:
sudo mysqld_safe --skip-grant-tables & mysql -u root mysql UPDATE user SET authentication_string=password('MyNewPass') WHERE user='root'; FLUSH PRIVILEGES; EXIT;
這個命令將會更改root用戶的密碼為“MyNewPass”,并刷新權限。當你再次啟動MySQL服務器時,您應該可以使用新密碼了!