MySQL 忘記 root 密碼怎麼辦?VPS / CentOS 無法登入修復方法(ERROR 1045 完整教學|2026)

MySQL 忘記 root 密碼怎麼辦?ERROR 1045 CentOS / VPS 完整重置方法(2026 教學)
⚠ 重要注意事項

skip-grant-tables 會暫時關閉 MySQL 權限驗證機制,因此只能用於「緊急維修或密碼重置」情境,請勿長期使用。

完成密碼重置後,務必立即恢復正常啟動模式,以避免資料庫暴露風險。

在操作前建議先備份資料庫,並避免在正式生產環境隨意啟用此模式,以防止服務中斷或無法連線等問題。

本內容僅供系統管理、維運與故障排除用途使用。

在 CentOS 或 VPS(RHEL / Cloud Server)環境中,MySQL 忘記 root 密碼是非常常見的問題,通常會出現 ERROR 1045 Access denied。由於伺服器環境沒有 GUI,需要透過 systemctl 與 mysqld_safe 進行安全模式修復。

這篇屬於「伺服器 / VPS 緊急修復版本」,適用於 CentOS、RHEL、雲端主機環境,不同於 Windows 或一般 Linux 桌面環境。

✔ 常見問題情境

  • VPS 無法登入 MySQL(ERROR 1045)
  • root 密碼遺失
  • phpMyAdmin 無法連線資料庫
  • 伺服器重啟後 MySQL 無法登入

✔ Step 1:停止 MySQL 服務

sudo systemctl stop mysqld

✔ Step 2:啟動安全模式(skip-grant-tables)

sudo mysqld_safe --skip-grant-tables --skip-networking &

✔ 此模式會跳過 MySQL 權限驗證 ✔ 僅用於緊急維修與密碼重置

✔ Step 3:登入 MySQL

mysql -u root

✔ Step 4:重置 root 密碼

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPassword123!';
FLUSH PRIVILEGES;

✔ Step 5:重啟 MySQL 服務

sudo systemctl restart mysqld

✔ CentOS / VPS 重點差異

  • 服務名稱:mysqld
  • 必須使用 sudo 權限
  • 沒有 GUI,只能 CLI 操作

FAQ 常見問題

CentOS / VPS 忘記 MySQL root 密碼怎麼辦?

可以透過 systemctl stop mysqld 停止服務,再使用 skip-grant-tables 進入安全模式,最後使用 ALTER USER 重置密碼。

ERROR 1045 在 VPS 為什麼常發生?

通常是 root 密碼錯誤或權限表異常,並不代表 MySQL 損壞,可以透過安全模式修復。

skip-grant-tables 可以長期使用嗎?

不可以,這是維修模式,會關閉權限驗證,完成後必須立即關閉。

    PAGE TOP