MySQL 錯誤1045:儘管憑證正確,但使用者'bill'@'localhost' 的存取被拒絕
嘗試存取遠端遠端遠端存取時透過命令列,使用者偶爾可能會遇到「Error 1045: Access Denied for user 'bill'@'localhost'」訊息,表示儘管提供了正確的登入憑證,連線仍被拒絕。
調查:
用戶創建了一個名為「bill」的新用戶,授予該用戶所有必要的權限,然後退出 root 用戶帳戶。但是,隨後嘗試從本機電腦(“localhost”)以使用者“bill”身分登入會導致錯誤。
根本原因:
通常,這出現此問題的原因是「mysql.user」表中存在匿名使用者(使用者名為空且「localhost」作為主機的使用者)。從「本機」連線時,伺服器會根據最特定的主機名稱或 IP 位址優先考慮符合的使用者帳戶。
解決方案1:刪除匿名使用者
解決方法問題,從'mysql.user' 表中刪除匿名使用者:
DELETE FROM mysql.user WHERE user = '' AND host = 'localhost';
解決方案2(對於MySQL 版本>= 5.7):
如果使用 MySQL 5.7 或更高版本,您可以透過 'skip_name_resolve' 變數停用匿名帳號:
SET GLOBAL skip_name_resolve = ON;
額外注意事項:
套接字連接:
在提供的範例中,使用者透過套接字連接。確保正確指定「使用者」和「密碼」欄位非常重要,因為在登入路徑中配置的任何匿名使用者都可能會覆寫提供的憑證。
TCP 連線:
透過 TCP 連線時,應使用 -h 標誌指定主機名稱或 IP位址,而不是本機:
mysql -u bill -p -hremote_hostname
空用戶名:
某些用戶端程式庫無法正確處理空白用戶名。應使用“@”符號代替“”來表示匿名使用者:
mysql -u'@'localhost'-ppassword
以上是為什麼 MySQL 會回傳錯誤 1045:即使使用正確的憑證,存取也被拒絕?的詳細內容。更多資訊請關注PHP中文網其他相關文章!