如何解決 MySQL 錯誤 1698:詳細指南

已發表: 2024-03-28

您是否嘗試以 root 使用者身分存取 MySQL 資料庫,但卻遇到錯誤訊息 MySQL error 1698 (28000): Accessied for user 'root'@'localhost'? 對於使用 MySQL 的人來說,這是一個常見問題。 它阻止透過各種方式存取資料庫,包括終端、PHPMyAdmin 或 MySQL 用戶端介面。 對於 Ubuntu 系統使用者來說,這個錯誤比其他作業系統 (OS) 更常見。

在本詳細指南中,我們將討論 MySQL 錯誤 1698 的主要原因,並提供有效的解決方案來解決和解決此錯誤。 那麼,讓我們開始解決這個問題,之後您將重新獲得對 MySQL 資料庫的快速存取。

MySQL錯誤1698是什麼及其背後的原因?

MySQL 錯誤 1698 背後的問題是 MySQL 如何檢查是否允許嘗試以「root」使用者身分使用它的人這樣做。 對於某些作業系統,MySQL 不為「root」使用者使用常規密碼。 MySQL root帳號透過auth_socket或unix_socket外掛程式檢查它。 該插件基於作業系統憑證而不是密碼運行,檢查用戶連接請求是否透過 UNIX 套接字,然後根據系統憑證驗證使用者名稱。

基本上,如果您沒有以「root」使用者身分登入作業系統,MySQL 不會讓您以「root」使用者身分存取它。 這種方法本應使事情變得更安全、更容易,但在此過程中,可能會出現錯誤 1698。

出現此錯誤的原因是安全措施與使用者期望之間存在衝突。 了解錯誤背後的原因是修復錯誤 1698 並找到保持資料庫安全且易於使用的方法的第一步。

 > MySQL 錯誤 1698 (28000)

進一步了解MySQL錯誤1698,我們發現其主要原因不是傳統的密碼概念,而是獨特的身份驗證方法。 此方法涉及我們上面提到的 auth_socket 或 unix_socket 插件。

本質上,這個插件根本不關心密碼。 相反,它會驗證連線是否是透過 UNIX 套接字建立的,然後檢查嘗試連線的使用者名稱是否與登入系統的使用者名稱相符。

這種身份驗證方法是對基於密碼的安全性的轉變。 它展示了該插件如何根據電腦系統的用戶資訊讓人們進入。

如何解決MySQL錯誤1698?

讓我們討論一下針對 MySQL 錯誤 1698 並確保未來有效的資料庫互動的解決方案。

將使用者切換到 mysql_native_password 插件

切換到「 mysql_native_password 」外掛是一個簡單的修復。 這種方法意味著將 root 使用者的驗證外掛程式更新為mysql_native_password 您應該修改 root 使用者的插件設置,然後透過刷新 MySQL 權限來應用這些更改。 此方法可恢復訪問,作為訪問拒絕問題的立即解決方案。

  1. 以特權使用者身分存取 MySQL shell。
  2. 使用此命令將 root 使用者的驗證方法切換為mysql_native_password
 更改使用者 'root'@'localhost' 透過 'your_new_password' 辨識 mysql_native_password;

3.刷新權限以應用更改:

 同花順特權;

4. 登出MySQL shell 並嘗試再次以root 使用者身分登入。

將系統用戶新增至MySQL用戶表

將系統使用者新增至 MySQL 使用者表並啟用 auth_socket外掛程式可以增強安全性。 此方法利用作業系統級身份驗證,允許以比傳統密碼身份驗證更安全的方式存取資料庫。 此方法最大限度地降低了直接使用 root 帳戶進行資料庫操作的風險。

  1. 以 root 使用者或其他具有足夠權限的使用者身分登入 MySQL 伺服器。
  2. 建立一個新使用者並將身份驗證設定為「 auth_socket 」:
 建立使用 auth_socket 識別的使用者「your_system_user」@「localhost」;

3. 授予新使用者必要的權限:

 使用授予選項將 *.* 上的所有權限授予 'your_system_user'@'localhost';

4.刷新權限以應用更改:

 同花順特權;

5. 使用新系統使用者登入 MySQL,並使用作業系統憑證進行身份驗證。

停用 unix_socket 身份驗證

如果您想要快速解決方法,停用 UNIX 套接字驗證可以提供立即但安全性較低的解決方案。 此方法透過從 root 使用者的驗證方法中刪除 UNIX 套接字插件,允許 root 使用者使用標準密碼協定登入。 雖然這解決了存取問題,但您應該考慮所涉及的潛在安全權衡。

  1. 開啟 MySQL 控制台。
  2. 更新 root 使用者以停用 UNIX 套接字驗證:
 UPDATE mysql.user SET plugin='' WHERE User='root';

3.刷新權限以儲存變更:

 同花順特權;

現在,root 使用者可以使用密碼進行身份驗證,繞過 UNIX 套接字方法。

結論

MySQL 錯誤 1698 就像您嘗試存取資料庫時的一個障礙。 無論您是第一次遇到此錯誤還是試圖防止將來再次發生此錯誤,了解此錯誤的具體情況都至關重要。 要解決 MySQL 錯誤 1698,您需要徹底了解 MySQL 的身份驗證架構,尤其是當它與作業系統級安全實踐(例如在 Ubuntu 系統中觀察到的安全實踐)相交叉時。

MYSQL 錯誤 1698 拒絕 root 使用者訪問,需要在 MySQL 中仔細設定身份驗證機制。

我們討論了徹底的解決方法,包括將身份驗證外掛程式更改為“ mysql_native_password ”,使用“ auth_socket ”外掛程式將系統使用者整合到MySQL的使用者表中,或完全停用UNIX_socket驗證。 每個解決方案都提供了一種獨特的方法來繞過錯誤,專為適應不同的安全狀況和管理偏好而量身定制。 您將選擇哪一種取決於您希望使用資料庫管理系統所獲得的安全性等級。