萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

MySQL Error 1045 Access Denied 完整排查與修復

MySQL 1045 錯誤:存取被拒絕完整解決方案

錯誤訊息 Access denied for user 'root'@'localhost' (using password: YES/NO) 表示認證失敗,常見原因:密碼錯誤、權限表損壞、主機名不符、密碼插件不相容。

Windows 環境修復實戰 (MySQL 5.x 驗證)

步驟 1:停止服務並進入 bin 目錄

net stop mysql
cd /d "D:\Program Files\MySQL\MySQL Server 5.2\bin"

步驟 2:跳過權限表啟動

mysqld --defaults-file="D:\Program Files\MySQL\MySQL Server 5.2\my.ini" --console --skip-grant-tables

啟動成功會顯示 mysqld: ready for connections,保持此視窗開啟。

步驟 3:另開視窗免密登入修復

mysql -u root
USE mysql;

-- MySQL 5.x
UPDATE user SET Password=PASSWORD('新密碼') WHERE User='root';
FLUSH PRIVILEGES;
EXIT;

步驟 4:重啟驗證

  1. 關閉 mysqld --console 視窗 (Ctrl+C)
  2. net start mysql
  3. mysql -u root -p新密碼 驗證

常見變體與進階排查

情況 A:密碼正確但仍報 1045

  • 檢查 user.Host 是否匹配 (localhost vs 127.0.0.1 vs %)
  • MySQL 8.0 插件問題:ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY '密碼';

情況 B:全新安裝無法登入

MySQL 5.7+ 首次安裝會生成隨機密碼,查看錯誤日誌:

grep 'temporary password' /var/log/mysqld.log
# 使用臨時密碼登入後必須修改密碼

情況 C:權限表損壞

-- 重建權限表 (謹慎操作,備份先)
mysql_upgrade -u root -p --force

Linux 環境快速修復

systemctl stop mysqld
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
# 執行相同 UPDATE/FLUSH PRIVILEGES
systemctl restart mysqld

預防措施

  • 使用密碼管理器儲存 root 密碼
  • 建立專用應用帳號,避免直接使用 root
  • 定期備份 mysql 系統資料庫
  • 啟用 validate_password 元件強化密碼政策
copyright © 萬盛學電腦網 all rights reserved