⚠
重要提醒
本教學涉及 MySQL 資料庫 root 密碼重置與系統權限操作,請確認你擁有該伺服器或資料庫的合法管理權限後再執行。
錯誤操作可能導致服務中斷或無法連線,建議先備份資料,並避免在正式生產環境隨意使用 skip-grant-tables 模式。
本內容僅供系統管理與故障排除用途使用。
錯誤操作可能導致服務中斷或無法連線,建議先備份資料,並避免在正式生產環境隨意使用 skip-grant-tables 模式。
本內容僅供系統管理與故障排除用途使用。
在 Linux 系統中(Ubuntu、Debian、CentOS),MySQL 忘記 root 密碼是非常常見的問題,通常會伴隨 ERROR 1045 Access denied 錯誤。當無法登入 MySQL 管理帳號時,需要透過 systemctl 停止服務並進入安全模式(skip-grant-tables)重新設定 root 密碼。
✔ 常見問題情境
- SSH 登入 MySQL 出現 ERROR 1045
- root 密碼遺失無法登入
- phpMyAdmin 無法連線資料庫
- VPS 重啟後 MySQL 無法登入
✔ Step 1:停止 MySQL 服務(Linux)
sudo systemctl stop mysql
📌 CentOS / RHEL 系統請使用:
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 mysql
📌 CentOS / RHEL:
sudo systemctl restart mysqld
✔ Linux 系統差異重點
- Ubuntu / Debian:mysql
- CentOS / RHEL:mysqld
- 操作核心一致(systemctl + skip-grant-tables)
FAQ 常見問題
Linux MySQL 忘記 root 密碼怎麼辦?
可透過 systemctl 停止 MySQL,再使用 mysqld_safe –skip-grant-tables 進入安全模式重置 root 密碼。
ERROR 1045 是什麼意思?
代表 MySQL 拒絕登入,通常是帳號或密碼錯誤,並不代表資料庫損壞。
skip-grant-tables 可以長期使用嗎?
不可以,這是維修模式,會關閉權限驗證,完成後必須立即恢復正常模式。
Ubuntu 和 CentOS 指令一樣嗎?
核心流程相同,但服務名稱不同(Ubuntu 使用 mysql,CentOS 使用 mysqld)。
