遇到 MySQL 登入時出現 ERROR 1045
(訪問被拒絕,使用者名稱或密碼錯誤),可以透過以下步驟來解決:
1. 確認使用者名稱和密碼
- 檢查使用者名稱和密碼:
- 確認在連線資料庫時輸入的使用者名稱和密碼是否正確。
- 嘗試在命令列中連線資料庫,確認是否能成功登入:
bash
mysql -u your_username -p
2. 重置密碼
-
停止 MySQL 服務:
bashsudo systemctl stop mysql
-
啟動 MySQL 服務並跳過授權表:
bashsudo mysqld_safe --skip-grant-tables &
-
連線到 MySQL:
bashmysql -u root
-
更改密碼:
sqlFLUSH PRIVILEGES; ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password'; FLUSH PRIVILEGES; EXIT;
-
重啟 MySQL 服務:
bashsudo systemctl start mysql
3. 檢查使用者許可權
- 確認使用者許可權:
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. 檢查連線引數
- 確認連線引數:
- 確認連線資料庫時的主機地址是否正確。
- 如果是在本地連線,確保使用的是
localhost
或127.0.0.1
。
5. 檢查 MySQL 日誌
- 檢視 MySQL 錯誤日誌:
- 檢視 MySQL 的錯誤日誌檔案,通常位於
/var/log/mysql/error.log
或/var/lib/mysql/hostname.err
。 - 使用
tail -f
命令檢視實時日誌:bashtail -f /var/log/mysql/error.log
- 檢視 MySQL 的錯誤日誌檔案,通常位於
6. 檢查 MySQL 配置檔案
- 檢查 MySQL 配置檔案:
- 編輯 MySQL 的配置檔案
my.cnf
或my.ini
,確保相關配置正確。 - 例如,確認
bind-address
是否設定為0.0.0.0
或127.0.0.1
:ini[mysqld] bind-address = 127.0.0.1
- 編輯 MySQL 的配置檔案
7. 檢查使用者賬戶資訊
- 確認使用者賬戶資訊:
- 確認使用者賬戶是否存在於 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 中:
總結
透過以上步驟,你可以逐步排查並解決 MySQL 登入時出現的 ERROR 1045
錯誤。如果仍然存在問題,請檢查其他系統級別的配置或聯絡資料庫管理員。