首頁 >Java >java教程 >為什麼我在嘗試連接到 MySQL 資料庫時收到'用戶\'root\'@\'localhost\'\ ​​的存取被拒絕”錯誤?

為什麼我在嘗試連接到 MySQL 資料庫時收到'用戶\'root\'@\'localhost\'\ ​​的存取被拒絕”錯誤?

Linda Hamilton
Linda Hamilton原創
2024-10-26 00:27:281147瀏覽

Why am I getting

MySQL 連線問題:使用者'root'@'localhost' 存取被拒絕

您提供的程式碼無法連線到資料庫並拋出SQLException 並顯示訊息「使用者'root'@'localhost'存取被拒絕(使用密碼:YES)」。此問題表示指定的使用者沒有存取資料庫所需的權限。

原因:

出現此異常的原因如下:

  • 使用者名稱或密碼錯誤
  • 使用者不足
  • 防火牆阻止訪問數據庫服務器

解決方案:

要解決此問題,請嘗試以下步驟:

  1. 檢查您的使用者名稱和密碼:確保提供給DriverManager.getConnection 的使用者名稱和密碼() 正確。
  2. 授予必要的權限: 執行下列SQL 語句將所有權限授予'localhost' 上的'root' 使用者:

    GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '%password%' WITH GRANT OPTION;

    將%password % 替換為「root」使用者的實際密碼。

  3. 防火牆設定:檢查系統上的防火牆是否阻止存取資料庫伺服器。如果是這樣,請將防火牆配置為允許資料庫伺服器正在使用的連接埠(通常是連接埠 3306)上的連線。

範例:

您已修改您的程式碼稍微嘗試在處理異常時建立資料庫:

<code class="java">public static void main(String[] args) throws ClassNotFoundException, ServletException, SQLException {
    try {
        Connection conn = (Connection) DriverManager.getConnection("jdbc:mysql://localhost/?user=root&amp;password=rootpassword");
        Statement s = (Statement) conn.createStatement();
        int result = s.executeUpdate("CREATE DATABASE databasename");
    } catch (Exception e) {
        e.printStackTrace();
    }
}</code>

但是,會發生相同的異常。在這種情況下,請確保「root」使用者俱有建立資料庫所需的權限。您可以使用以下 SQL 語句授予此權限:

GRANT CREATE DATABASE ON *.* TO 'root'@'localhost' WITH GRANT OPTION;

透過執行下列步驟,您應該能夠成功建立與資料庫的連線並避免「存取被拒絕」例外狀況。

以上是為什麼我在嘗試連接到 MySQL 資料庫時收到'用戶\'root\'@\'localhost\'\ ​​的存取被拒絕”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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