首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

MySQL Root 密碼遺忘?三分鐘重置存取權限完整教學

     編輯:MySQL 資料庫相關知識

遺忘 MySQL root 密碼是資料庫管理常見狀況。本文提供標準、安全的重置流程,透過跳過權限表啟動臨時執行個體、更新密碼雜湊、重新載入權限三大步驟,快速恢復最高權限存取。

適用場景

  • 全新安裝後未記錄初始隨機密碼
  • 長期未登入導致密碼遺失
  • 接手維護無交接密碼文件

重置步驟(Linux/macOS 環境)

1. 停止現有 MySQL 服務

# systemd 系統
sudo systemctl stop mysqld
# 或舊版 init.d
sudo service mysql stop

# 確認進程已終止
ps aux | grep mysqld

2. 以跳過權限模式啟動臨時執行個體

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

參數說明:

  • --skip-grant-tables:略過權限驗證,允許無密碼登入
  • --skip-networking:禁用網路連線,僅允許本地 socket 連線,提升安全性
  • &:置於背景執行

3. 無密碼以 root 身分登入

mysql -u root

成功進入 mysql> 提示符即表示臨時模式生效。

4. 更新 root 密碼

MySQL 5.7.6+ / 8.0+(authentication_string 欄位):

USE mysql;
UPDATE user SET authentication_string = PASSWORD('NewStrongPass2024!') WHERE User = 'root';
FLUSH PRIVILEGES;
EXIT;

MySQL 5.7.6 以前(password 欄位):

USE mysql;
UPDATE user SET password = PASSWORD('NewStrongPass2024!') WHERE User = 'root';
FLUSH PRIVILEGES;
EXIT;

MySQL 8.0 建議改用原生語法(更安全):

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

5. 正常重啟 MySQL 服務

# 先終止臨時進程
sudo pkill mysqld
# 再啟動正式服務
sudo systemctl start mysqld
# 或
sudo service mysql start

6. 驗證新密碼

mysql -u root -p'NewStrongPass2024!'
# 或互動式輸入密碼
mysql -u root -p

Windows 環境快速指令

net stop mysql
mysqld --console --skip-grant-tables --shared-memory
# 另開視窗
mysql -u root
# 執行上述 UPDATE/FLUSH 指令
# 關閉視窗,net start mysql

常見問題排查

現象原因與對策
ERROR 1045 (28000): Access denied未確實加入 --skip-grant-tables 或舊進程未殺乾淨
Unknown column 'password'版本差異,改用 authentication_string 或 ALTER USER
修改後仍無法登入未執行 FLUSH PRIVILEGES 或 host 欄位不匹配(需同時更新 root@%、root@127.0.0.1、root@::1)

安全性建議

  • 重置後立即執行 mysql_secure_installation 移除匿名帳號、禁止 root 遠端登入、移除測試資料庫。
  • 使用密碼管理器儲存強密碼(長度≥16、含大小寫數字符號)。
  • 生產環境建議建立專用管理帳號,降低 root 直接使用頻率。
  • 記錄操作日誌與時間戳記,符合稽核追蹤需求。

掌握此標準流程,即可在密碼遺失時從容應對,將停機時間壓縮至最低,確保資料庫服務連續性。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved