⚠ 重要注意事項
skip-grant-tables 會暫時關閉 MySQL 權限驗證機制,因此只能用於「緊急維修或密碼重置」情境,請勿長期使用。
完成密碼重置後,務必立即恢復正常啟動模式,以避免資料庫暴露風險。
在操作前建議先備份資料庫,並避免在正式生產環境隨意啟用此模式,以防止服務中斷或無法連線等問題。
本內容僅供系統管理、維運與故障排除用途使用。
skip-grant-tables 會暫時關閉 MySQL 權限驗證機制,因此只能用於「緊急維修或密碼重置」情境,請勿長期使用。
完成密碼重置後,務必立即恢復正常啟動模式,以避免資料庫暴露風險。
在操作前建議先備份資料庫,並避免在正式生產環境隨意啟用此模式,以防止服務中斷或無法連線等問題。
本內容僅供系統管理、維運與故障排除用途使用。
在 CentOS 或 VPS(RHEL / Cloud Server)環境中,MySQL 忘記 root 密碼是非常常見的問題,通常會出現 ERROR 1045 Access denied。由於伺服器環境沒有 GUI,需要透過 systemctl 與 mysqld_safe 進行安全模式修復。
✔ 常見問題情境
- 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 可以長期使用嗎?
不可以,這是維修模式,會關閉權限驗證,完成後必須立即關閉。
