首頁 >資料庫 >mysql教程 >為什麼我會收到 MySQL 錯誤 1698(訪問被拒絕)以及如何修復它?

為什麼我會收到 MySQL 錯誤 1698(訪問被拒絕)以及如何修復它?

Barbara Streisand
Barbara Streisand原創
2024-12-25 13:12:12423瀏覽

Why Am I Getting MySQL Error 1698 (Access Denied) and How Can I Fix It?

在MySQL 登入期間處理錯誤1698

使用者可能會遇到錯誤1698 (28000): 使用者'root'@的存取被拒絕'localhost' 當嘗試使用root 使用者登入MySQL資料庫時。此錯誤經常在 Ubuntu 等系統上遇到,其中 MySQL 預設使用 Unix auth_socket 插件進行身份驗證。

背景: auth_socket 外掛程式依賴系統使用者憑證進行驗證。透過查詢mysql.user 表,您可以驗證root 使用者是否已使用此外掛程式註冊:

SELECT User, Host, plugin FROM mysql.user;

可能的解決方案:

選項1 :設定root使用者使用mysql_native_password外掛程式
這個方法涉及到設定root使用者使用較傳統的mysql_native_password 外掛程式:

UPDATE user SET plugin='mysql_native_password' WHERE User='root';
FLUSH PRIVILEGES;
sudo service mysql restart

選項2:建立新的資料庫使用者(建議)
另一種方法是使用您的系統使用者名稱建立新的資料庫使用者。這提供了一個更容易管理和安全的選項:

CREATE USER 'YOUR_SYSTEM_USER'@'localhost' IDENTIFIED BY 'YOUR_PASSWD';
GRANT ALL PRIVILEGES ON *.* TO 'YOUR_SYSTEM_USER'@'localhost';
UPDATE user SET plugin='auth_socket' WHERE User='YOUR_SYSTEM_USER';
FLUSH PRIVILEGES;
sudo service mysql restart

請注意,使用選項2,您將使用系統使用者名稱連接到MySQL:

mysql -u YOUR_SYSTEM_USER

其他注意事項:

  • 在MySQL 版本8.x.x 中, auth_socket 外掛程式可能已被 caching_sha2_password 取代。請查閱 MySQL 文件以了解適當的身份驗證外掛程式和登入方法。
  • 在 Debian 9 (Stretch) 中,auth_socket 外掛程式已重新命名為 unix_socket。相應地調整 SQL 命令。

以上是為什麼我會收到 MySQL 錯誤 1698(訪問被拒絕)以及如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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