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

MySQL Root 密碼忘記?Windows/Linux 通用找回指南(含 phpMyAdmin 奇技)

     編輯:MySQL 資料庫相關知識

通用核心原理

跳過授權表啟動(--skip-grant-tables) → 免密登入 → 更新密碼 → 正常重啟

Windows 環境步驟

  1. 管理員身分開啟 CMD / PowerShell。
  2. 停止服務:net stop mysql 或 sc stop mysql。
  3. 進入安裝目錄 bin:cd C:\Program Files\MySQL\MySQL Server 8.0\bin。
  4. 跳過授權啟動:mysqld --skip-grant-tables --console(視窗保持開啟)。
  5. 新開視窗免密登入:mysql -u root。
  6. 更新密碼(8.0+):
    FLUSH PRIVILEGES;
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
    -- 或 5.7
    UPDATE mysql.user SET authentication_string=PASSWORD('NewPass') WHERE User='root';
    FLUSH PRIVILEGES;
    
  7. 關閉 --skip-grant-tables 視窗 (Ctrl+C),正常啟動服務:net start mysql。
  8. 新密碼驗證:mysql -u root -p。

Linux 環境步驟

# 1. 停止服務
systemctl stop mysqld

# 2. 跳過授權啟動(背景執行)
mysqld_safe --skip-grant-tables &

# 3. 免密登入
mysql -u root

# 4. 更新密碼(同 Windows 步驟 6)

# 5. 關閉背景進程,正常啟動
mysqladmin -u root -p shutdown   # 用新密碼關閉
systemctl start mysqld

進階奇技:phpMyAdmin + 空資料庫覆蓋法(適用於無法停機維護窗口)

  1. 確認已安裝 phpMyAdmin 且可正常訪問。
  2. 停止 MySQL 服務。
  3. 備份原 data/mysql 目錄:mv data/mysql data/mysql_bak。
  4. 準備同版本空資料庫的 mysql 目錄(可從相同版本安裝包提取或全新安裝實例複製)。
  5. 將空 mysql 目錄放入 data/。
  6. 啟動 MySQL,此時 root 密碼為空。
  7. 登入 phpMyAdmin(root/空密碼),進入 mysql_bak.user 表,找回原密碼雜湊或直接編輯修改密碼。
  8. 停止 MySQL,還原目錄:rm -rf data/mysql && mv data/mysql_bak data/mysql。
  9. 啟動 MySQL,使用第 7 步設定的密碼登入。
風險提示: 此法會暫時丟失所有用戶權限變更,僅建議在有完整備份且無法停機修改密碼的極端情況使用。

常見坑點

  • Windows 路徑含空格: 用雙引號包裹 "C:\Program Files\MySQL\MySQL Server 8.0\bin\mysqld"。
  • 8.0 密碼雜湊: PASSWORD() 函數已移除,必須用 ALTER USER 或 SET PASSWORD。
  • 權限不足: Linux 需 root 或 mysql 進程擁有者身分執行 mysqld_safe。
  • 多實例: 指定 --defaults-file=/etc/my.cnf.3306 避免啟動錯誤實例。

預防勝於治療

  1. 使用密碼管理器(Bitwarden、1Password、KeePass)儲存 root 密碼。
  2. 建立專用運維帳號 dba@'10.0.0.%' 授予 SUPER, PROCESS, RELOAD 等權限,日常運維不用 root。
  3. 啟用 validate_password 強制複雜度,避免弱密碼被暴力破解。
  4. 定期演練密碼重置流程,納入運維 SOP。

總結

忘記 root 密碼不可怕,--skip-grant-tables 是萬能鑰匙。Windows/Linux 步驟大同小異,關鍵在於:停服務 → 跳過授權啟動 → 免密進入 → ALTER USER 改密 → 正常重啟。將流程文檔化、腳本化,關鍵時刻才能手不抖、心不慌。

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