mysql登入遇到ERROR 1045問題解決方法

黄文Rex發表於2024-10-07

遇到 MySQL 登入時出現 ERROR 1045(訪問被拒絕,使用者名稱或密碼錯誤),可以透過以下步驟來解決:

1. 確認使用者名稱和密碼

  1. 檢查使用者名稱和密碼
    • 確認在連線資料庫時輸入的使用者名稱和密碼是否正確。
    • 嘗試在命令列中連線資料庫,確認是否能成功登入:
      bash
      mysql -u your_username -p

2. 重置密碼

  1. 停止 MySQL 服務

    bash
    sudo systemctl stop mysql
  2. 啟動 MySQL 服務並跳過授權表

    bash
    sudo mysqld_safe --skip-grant-tables &
  3. 連線到 MySQL

    bash
    mysql -u root
  4. 更改密碼

    sql
    FLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; EXIT;
  5. 重啟 MySQL 服務

    bash
    sudo systemctl start mysql

3. 檢查使用者許可權

  1. 確認使用者許可權
    sql
    SHOW GRANTS FOR 'your_username'@'localhost';
    • 如果許可權不正確,可以重新授予許可權:
      sql
      GRANT ALL PRIVILEGES ON *.* TO 'your_username'@'localhost' IDENTIFIED BY 'your_password' WITH GRANT OPTION; FLUSH PRIVILEGES;

4. 檢查連線引數

  1. 確認連線引數
    • 確認連線資料庫時的主機地址是否正確。
    • 如果是在本地連線,確保使用的是 localhost127.0.0.1

5. 檢查 MySQL 日誌

  1. 檢視 MySQL 錯誤日誌
    • 檢視 MySQL 的錯誤日誌檔案,通常位於 /var/log/mysql/error.log/var/lib/mysql/hostname.err
    • 使用 tail -f 命令檢視實時日誌:
      bash
      tail -f /var/log/mysql/error.log

6. 檢查 MySQL 配置檔案

  1. 檢查 MySQL 配置檔案
    • 編輯 MySQL 的配置檔案 my.cnfmy.ini,確保相關配置正確。
    • 例如,確認 bind-address 是否設定為 0.0.0.0127.0.0.1
      ini
      [mysqld] bind-address = 127.0.0.1

7. 檢查使用者賬戶資訊

  1. 確認使用者賬戶資訊
    • 確認使用者賬戶是否存在於 MySQL 中:
      sql
      SELECT User, Host FROM mysql.user;
    • 如果使用者不存在,可以新增新的使用者:
      sql
      CREATE USER 'new_username'@'localhost' IDENTIFIED BY 'new_password'; GRANT ALL PRIVILEGES ON *.* TO 'new_username'@'localhost' WITH GRANT OPTION; FLUSH PRIVILEGES;

總結

透過以上步驟,你可以逐步排查並解決 MySQL 登入時出現的 ERROR 1045 錯誤。如果仍然存在問題,請檢查其他系統級別的配置或聯絡資料庫管理員。

相關文章