首頁 >資料庫 >mysql教程 >為什麼 MySQL 會回傳錯誤 1045:即使使用正確的憑證,存取也被拒絕?

為什麼 MySQL 會回傳錯誤 1045:即使使用正確的憑證,存取也被拒絕?

DDD
DDD原創
2024-12-17 04:28:25734瀏覽

Why Does MySQL Return Error 1045: Access Denied Even with Correct Credentials?

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中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn