5.12

孙锺鸣發表於2024-06-19

學習內容:

如何解決以下報錯Access denied for user 'root'@'localhost' (using password: YES)

java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: YES)

這個錯誤資訊表明您嘗試使用MySQL資料庫時,以使用者root從localhost進行登入,但是提供的密碼不被接受或者該使用者沒有足夠的許可權。要解決這個問題,可以嘗試以下幾個步驟:

確認密碼是否正確:

確保您在連線資料庫時使用的密碼是正確的。有時候,簡單的拼寫錯誤或者大小寫不匹配都會導致這個問題。

如果您忘記了密碼,可以透過MySQL的重置密碼流程來恢復。這通常涉及到修改MySQL的配置檔案(如my.cnf或my.ini),以允許無密碼登入,然後登入並更改root使用者的密碼。

檢查使用者許可權:

確認root使用者是否有從localhost連線的許可權。有時候,儘管使用者名稱和密碼正確,但如果資料庫中有特定的訪問限制(比如IP限制或使用者許可權配置),也會出現這種錯誤。可以使用MySQL的命令列工具檢查使用者許可權:

Sql

USE mysql;

SELECT User, Host, Password FROM user WHERE User = 'root';

這個查詢會展示所有名為root的使用者及其來源主機和密碼雜湊。

修改使用者許可權:

如果需要,您可以修改或新增root使用者的訪問許可權。例如,允許root從localhost連線:

Sql

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password';

FLUSH PRIVILEGES;

這裡,your_password應該替換為您的實際密碼。

檢查連線字串:

在Java應用中,檢查資料庫連線字串(JDBC URL)是否正確無誤,特別是關於埠號、資料庫名稱等部分。格式通常是這樣的:

Java

jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC

確保資料庫名、埠、SSL選項等引數與您的設定相匹配。

環境問題:

如果您是在開發環境中遇到這個問題,確保沒有其他服務(如Docker容器、XAMPP、WAMP等)也在使用MySQL並且可能佔用了預設埠(通常是3306)。

如果上述步驟都無法解決問題,可能需要更詳細地檢查MySQL的日誌檔案,看看是否有其他錯誤資訊提供了線索,或者考慮是否有防火牆規則阻止了訪問。

如何解決以下報錯Access denied for user 'root'@'localhost' (using password: YES) java.sql.SQLException: Access denied for user 'root'@'localhost' (using password: Y

這個錯誤資訊表明您嘗試使用MySQL資料庫時,以使用者rootlocalhost進行登入,但是提供的密碼不被接受或者該使用者沒有足夠的許可權。要解決這個問題,可以嘗試以下幾個步驟:

  1. 確認密碼是否正確:

    • 確保您在連線資料庫時使用的密碼是正確的。有時候,簡單的拼寫錯誤或者大小寫不匹配都會導致這個問題。
    • 如果您忘記了密碼,可以透過MySQL的重置密碼流程來恢復。這通常涉及到修改MySQL的配置檔案(如my.cnf或my.ini),以允許無密碼登入,然後登入並更改root使用者的密碼。
  2. 檢查使用者許可權:

    • 確認root使用者是否有從localhost連線的許可權。有時候,儘管使用者名稱和密碼正確,但如果資料庫中有特定的訪問限制(比如IP限制或使用者許可權配置),也會出現這種錯誤。可以使用MySQL的命令列工具檢查使用者許可權:
      Sql
      1USEmysql;
      2SELECT User, Host, Password FROM user WHERE User = 'root';
      這個查詢會展示所有名為root的使用者及其來源主機和密碼雜湊。
  3. 修改使用者許可權:

    • 如果需要,您可以修改或新增root使用者的訪問許可權。例如,允許rootlocalhost連線:
      Sql
      1GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password';
      2FLUSH PRIVILEGES;
      這裡,your_password應該替換為您的實際密碼。
  4. 檢查連線字串:

    • 在Java應用中,檢查資料庫連線字串(JDBC URL)是否正確無誤,特別是關於埠號、資料庫名稱等部分。格式通常是這樣的:
      Java
      1jdbc:mysql://localhost:3306/your_database?useSSL=false&serverTimezone=UTC
      確保資料庫名、埠、SSL選項等引數與您的設定相匹配。
  5. 環境問題:

    • 如果您是在開發環境中遇到這個問題,確保沒有其他服務(如Docker容器、XAMPP、WAMP等)也在使用MySQL並且可能佔用了預設埠(通常是3306)。

如果上述步驟都無法解決問題,可能需要更詳細地檢查MySQL的日誌檔案,看看是否有其他錯誤資訊提供了線索,或者考慮是否有防火牆規則阻止了訪問。