錯誤操作可能導致服務中斷或無法連線,建議先備份資料,並避免在正式生產環境隨意使用 skip-grant-tables 模式。
本內容僅供系統管理與故障排除用途使用。
MySQL 忘記 root 密碼是 Windows 開發環境中最常見的問題之一,尤其在 XAMPP、MySQL Installer 或 VPS 伺服器中,經常會遇到 ERROR 1045 無法登入的情況。本篇將以實務操作方式,完整教你如何在 Windows 中重置 MySQL root 密碼,包含安全模式啟動、skip-grant-tables 使用方式,以及恢復正常服務的完整流程。
✔ 案例一:XAMPP 使用者忘記 MySQL root 密碼(完整流程)
在 XAMPP 環境中,MySQL 由 Control Panel 管理。當忘記 root 密碼並出現 ERROR 1045 時,必須透過安全模式重置,而不是 phpMyAdmin。
📌 Step 1:停止 MySQL 服務
# XAMPP 直接點 Stop MySQL
# 或 Windows CMD
net stop mysql
📌 Step 2:進入 MySQL 目錄
C:\xampp\mysql\bin
cd C:\xampp\mysql\bin
📌 Step 3:啟動 skip-grant-tables(關鍵)
mysqld --skip-grant-tables --skip-networking
⚠ 此視窗會卡住是正常的,代表 MySQL 已進入免密碼模式。
📌 Step 4:開啟新 CMD 登入
mysql -u root
📌 Step 5:重設 root 密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
FLUSH PRIVILEGES;
📌 Step 6:重啟 MySQL
net start mysql
✔ 案例二:MySQL Installer 無法登入 root(ERROR 1045)
Windows MySQL Installer 安裝後若出現 ERROR 1045,通常是 root 密碼未設定或遺失。
📌 Step 1:停止服務
net stop mysql80
📌 Step 2:啟動安全模式
mysqld --skip-grant-tables --skip-networking
📌 Step 3:登入 MySQL
mysql -u root
📌 Step 4:重設密碼
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
FLUSH PRIVILEGES;
📌 Step 5:重新啟動
net start mysql80
✔ 案例三:MySQL Workbench 顯示 ERROR 1045
Workbench 顯示 ERROR 1045 時,問題通常在 MySQL Server,而不是 Workbench 本身。代表 root 密碼錯誤或權限失效,需要直接進行 CLI 重置。
✔ 案例四:Windows Server / VPS MySQL 無法登入
在 Windows Server 或 VPS 環境中,MySQL 以服務方式運行。可透過以下方式修復:
net stop mysql80
mysqld --skip-grant-tables --skip-networking
修改完成後再重新啟動:
net start mysql80
🔒 重點安全提醒
skip-grant-tables 僅能用於維修用途,會暫時關閉 MySQL 權限驗證機制,完成密碼重置後必須立即關閉並恢復正常模式,避免安全風險。
FAQ 常見問題
MySQL 忘記 root 密碼怎麼辦?
可以透過 skip-grant-tables 安全模式進入 MySQL,跳過權限驗證後再使用 ALTER USER 重新設定 root 密碼。此方法適用於 Windows、XAMPP 與 MySQL Installer,且不會影響資料庫內容。
ERROR 1045 是什麼意思?
ERROR 1045 代表 MySQL 拒絕登入請求,通常原因是 root 密碼錯誤或帳號驗證失敗,並不代表資料庫損壞。最常見解法就是重新設定 root 密碼。
skip-grant-tables 可以長期使用嗎?
不可以。skip-grant-tables 會關閉 MySQL 權限驗證機制,只能用於緊急維修或密碼重置。使用完成後必須立即恢復正常模式,否則會有嚴重安全風險。
net stop mysql80 一定會成功嗎?
不一定。只有當 MySQL 服務名稱真的叫 mysql80 時才會成功。如果服務名稱不同,需先使用 net start 或 sc query 查詢正確服務名稱。
XAMPP 忘記 MySQL 密碼可以用這方法嗎?
可以。XAMPP 使用的 MySQL 與標準 MySQL 核心相同,只要先停止 XAMPP 的 MySQL 服務,再使用 skip-grant-tables 模式即可重置 root 密碼。
重置 MySQL root 密碼會不會影響資料庫資料?
不會。重置 root 密碼只會修改帳號驗證資訊,不會影響資料表、資料庫內容或既有資料結構。
Workbench 顯示 ERROR 1045 怎麼解?
Workbench 本身沒有問題,ERROR 1045 通常是 MySQL Server 的 root 密碼錯誤。需直接進入 MySQL CLI 使用安全模式重置密碼,而不是修改 Workbench 設定。
