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

MySQL Root 密碼遺失替代方案:替換 mysql 系統資料庫目錄快速恢復存取權

     編輯:MySQL 資料庫相關知識

適用場景

無法使用 skip-grant-tables (如嵌入式環境、權限不足、Windows 服務鎖定) 時的備用方案。

操作步驟

  1. 備份原系統庫:
    mv /var/lib/mysql/mysql /var/lib/mysql/mysql_old
  2. 取得乾淨系統庫:
    • 從相同版本 MySQL 安裝包 data/mysql 複製。
    • 或從同版本、同平台的乾淨實例複製。
    cp -r /path/to/clean/mysql /var/lib/mysql/
  3. 修正擁有者/權限:
    chown -R mysql:mysql /var/lib/mysql/mysql
    chmod -R 700 /var/lib/mysql/mysql
  4. 重啟服務:此時 Root 密碼為空,可免密登入。
  5. 設定新密碼並審計:
    mysql -u root mysql
    UPDATE user SET Password=PASSWORD('newpass') WHERE User='root';
    FLUSH PRIVILEGES;
  6. 完整性檢查:
    • 檢查 mysql_old 中的使用者、權限是否被竄改。
    • 比對業務資料庫檢查和 (checksum) 確認資料未被竄改。
    • 若有備份,執行完整還原驗證。

風險與注意

  • 會遺失所有使用者帳號與權限,需重新建立應用帳號。
  • 版本必須完全一致 (含小版本),否則系統表結構不匹配導致啟動失敗。
  • 僅作為 skip-grant-tables 不可用時的最後手段。

更好的預防

  • 建立備用 SUPER 帳號 (如 admin@localhost) 存放於密碼管理器。
  • 自動化備份 mysql 系統庫 (每日 mysqldump --no-data mysql)。
  • 啟用審計日誌 (MariaDB Audit Plugin / MySQL Enterprise Audit) 記錄權限變更。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved