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






