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

MySQL Root 密碼重置與恢復綜合大全:六大標準方法、UDF 破解、user 表替換、十六進位編輯

     編輯:MySQL 資料庫相關知識

場景分類

  • 已知舊密碼:標準修改流程。
  • 遺忘密碼/繼承系統:需繞過權限驗證。
  • 滲透測試/授權審計:評估弱密碼/配置風險。

六大標準重置方法(按推薦度排序)

1. --init-file 自動化腳本(生產首選,無互動、可審計)

echo "ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass!'; FLUSH PRIVILEGES;" > /tmp/reset.sql
mysqld --init-file=/tmp/reset.sql --user=mysql &

2. --skip-grant-tables 互動修改(通用、直觀)

systemctl stop mysql
mysqld_safe --skip-grant-tables --skip-networking &
mysql -u root
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass!';
FLUSH PRIVILEGES;
EXIT
pkill mysqld
systemctl start mysql

3. mysqladmin 命令列(已知舊密碼/腳本自動化)

mysqladmin -u root -p'old' password 'NewPass!'

4. SET PASSWORD / ALTER USER(已登入 Shell)

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('NewPass!');
-- 或 5.7.6+
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass!';

5. UPDATE mysql.user 表(舊版/跳過權限模式)

UPDATE mysql.user SET authentication_string=PASSWORD('NewPass!') WHERE User='root';
FLUSH PRIVILEGES;

6. GRANT ... IDENTIFIED BY(隱含建立/修改)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY 'NewPass!';
FLUSH PRIVILEGES;

非常規手段(僅限授權環境/極端情況)

A. 替換 user 表檔案(物理層面)

  1. 停止 MySQL。
  2. 備份 datadir/mysql/user.{frm,MYD,MYI}(MyISAM)或 user.ibd(InnoDB)。
  3. 從已知密碼的同版本實例複製對應檔案覆蓋。
  4. 修正擁有者/權限:chown mysql:mysql user.*; chmod 660 user.*。
  5. 啟動 MySQL,以已知密碼登入,再改為目標密碼。

B. 十六進位編輯 user.MYD(MyISAM 專用)

  • 關閉 MySQL,用 xxd/UltraEdit 開啟 user.MYD。
  • 定位 root 記錄,密碼欄位偏移處寫入目標雜湊值(如 565491d704013245 對應 123456)。
  • 極高風險:結構不匹配導致損壞,不建議生產使用。

C. UDF 注入(需 FILE 權限、plugin_dir 可寫)

  • 上傳惡意 .so/.dll 至 plugin_dir,CREATE FUNCTION 註冊,執行系統指令修改密碼/建立帳號。
  • 屬於攻擊手法,防禦方:secure_file_priv、plugin_dir 唯讀、禁用 UDF。

版本密碼欄位對照

版本表欄位雜湊長度函數
5.0 / 5.1Password16/41 字元PASSWORD() / OLD_PASSWORD()
5.5 / 5.6Password41 字元PASSWORD()
5.7.6+authentication_string變長內建雜湊
8.0authentication_string變長caching_sha2_password

防禦建議

  • Root 僅允許 localhost/Unix Socket 登入。
  • 啟用 validate_password 強制複雜度。
  • 審計 mysql.user 異動(觸發器記錄至審計表)。
  • 定期滲透測試驗證密碼強度。
  • 建立 Break-glass 程序:離線保存緊急重置腳本,雙人授權啟用。

掌握標準重置流程,非常規手段僅作風險認知,構建全生命週期密碼管理體系。

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