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

MySQL 遺失 root 密碼?來源碼覆蓋法快速奪回控制權

     編輯:MySQL 資料庫相關知識

適用情境

  • 生產伺服器被入侵導致 root 密碼竄改
  • 無備份可用、無法用 skip-grant-tables(如權限不足)
  • 需快速恢復控制權並檢查損害範圍

六步驟恢復流程

  1. 下載 MySQL 原始碼套件:不分作業系統,需同版本的 data/mysql 目錄
  2. 備份原授權資料:將現有 data/mysql 重命名為 old_mysql
  3. 覆蓋乾淨授權表:從原始碼套件複製 data/mysql 到 data/ 目錄
  4. 重啟 MySQL:此時授權狀態同全新安裝,root 無密碼可登入
  5. 重新配置權限:登入後立即設定強密碼、審核使用者帳號
  6. 深度檢查:
    • 檢視 old_mysql 中的 user、db、tables_priv 等表,比對異常帳號、權限異動
    • 若有資料庫備份,進行完整性比對(CHECKSUM TABLE、行數、關鍵資料抽樣)
    • 檢查是否有惡意存儲過程、觸發器、定時事件

核心原理

MySQL 權限資訊儲存在 mysql 系統資料庫中。覆蓋為原廠預設的 mysql 資料庫,等同重置所有權限為出廠狀態(root 無密碼、無其他使用者)。

事後加強建議

  • 啟用 skip-show-database、local-infile=0
  • 限制 root 僅 localhost 登入
  • 建立專用管理帳號,停用 root 遠程登入
  • 定期審核 mysql.user 表異常變更
  • 部署 WAF/資料庫防火牆
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved