Access denied for user 'root'@'localhost' (using password: YES) 這個錯誤在網上搜一下,能看到非常多的此類問題的解決方法,但 MySQL 版本不一樣,導致同一種方法一部分人能解決,一部分人又不能解決該問題。我給出的是在 Window 10 環境下,MySQL 8.0 版本的解決方案,親測可行。
運行 Cmd
以管理員權限運行 Cmd,進入 MySQL 的安裝目錄,運行如下命令:
mysqld --shared-memory --skip-grant-tables --console
運行 cmd 命令
另起 Cmd
另外再開一個 Cmd 窗口,進入 MySQL 安裝目錄下的 bin 目錄,直接輸入 mysql 命令,此時會直接免密登入。
免密登入 MySQL
刷新權限
運行 flush privileges; 命令刷新權限,此步不可省略。
mysql> flush privileges;
Query OK, 0 rows affected (0.13 sec)
更新密碼
運行如下命令,更新 root 密碼,新密碼注意下格式 [ 大寫字母 + 小寫字母 + 數字 + 特殊字符 ] 形式,就是盡量復雜點的密碼,避免修改失敗。
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY '此處填寫你的密碼';
Query OK, 0 rows affected (0.14 sec)
登錄 root
最后再次嘗試登錄 root 用戶,并用 navicat 等三方工具登錄測試,成功 ...
登錄成功
總結
單純的 --skip-grant-tables 在 8.0 版本中已經無效了,需要另外加上 --shared-memory,才能直接免密進入。另外,我是采用 phpEnv 集成環境的,所以在用 net start mysql 等命令的時候一直提示服務名無效,因為 MySQL 服務并未在 windows 環境下注冊過,這種情況只需要進入 MySQL 安裝目錄的 bin 目錄下,運行 mysqld --install 命令,出現提示 Service successfully installed. 即可。
注冊服務