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

MySQL Root 密碼重置/破解大全:從 phpMyAdmin 到十六進制編輯器的 10 種姿勢

     編輯:MySQL 資料庫相關知識

分類導覽

類別方法適用場景風險
圖形工具phpMyAdmin 編輯 mysql.user 表已有 Web 管理介面、知舊密碼低
MySQL Workbench / Navicat 執行 SQL同前低
命令行工具mysqladmin -u root -p password 'new'知舊密碼、本地/遠程均可低
mysql -u root -p 進入後 ALTER USER知舊密碼、需批量改多 host低
SET PASSWORD FOR 'root'@'%' = PASSWORD('...')5.7.6 前版本中 (舊語法)
特權操作 (需 root 系統權限)skip-grant-tables 臨時啟動 + SQL 改密忘記密碼、最通用標準姿勢中 (短暫無認證)
複製已知密碼實例的 user.* 文件覆蓋遷移/克隆環境、擁有源文件高 (權限/版本不匹配風險)
十六進制編輯 user.MYD 直接改密碼哈希極端環境、無 SQL 入口極高 (文件損壞、結構變更失效)
Windows: mysqld-nt --skip-grant-tables + mysqladmin flush-privileges passwordWindows 服務模式忘記密碼中

標準急救流程 (Linux/Unix) — 推薦收藏


# 1. 停庫
systemctl stop mysqld
# 或 kill -TERM $(cat /var/run/mysqld/mysqld.pid)

# 2. 無認證啟動 (僅本地、臨時)
mysqld_safe --skip-grant-tables --skip-networking --socket=/tmp/mysql_recovery.sock &

# 3. 連線改密
mysql --socket=/tmp/mysql_recovery.sock -u root
mysql> FLUSH PRIVILEGES;
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass2024!';
mysql> FLUSH PRIVILEGES;
mysql> \q

# 4. 重啟驗證
killall mysqld
systemctl start mysqld
mysql -u root -p'NewStrongPass2024!' -e "SELECT 1;"

Windows 服務模式專用


net stop MySQL
cd C:\Program Files\MySQL\MySQL Server 5.7\bin
mysqld --skip-grant-tables --skip-networking &
# 新開 CMD
mysql -u root
> FLUSH PRIVILEGES;
> ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass2024!';
> \q
# 關閉前台 mysqld (Ctrl+C)
net start MySQL

高危姿勢:十六進制編輯 user.MYD (僅作原理了解)

  • MyISAM 表數據文件 user.MYD 存儲加密哈希 (如 *81F5E21E35407D884A6CD4A731AEBFB6AF209E1B 為 password 的 SHA1 兩次)。
  • UltraEdit 等工具開啟,定位 root 後的哈希段,覆蓋為已知哈希或清空。
  • 風險:表結構變更 (如 5.7 新增 authentication_string 欄位) 導致偏移錯位、校驗和失效、InnoDB 表不適用。

避坑指南

  1. 權限表結構版本差異:5.7 將 Password 改名 authentication_string,直接複製 user.MYD 跨版本必失效。
  2. 文件屬主/權限:覆蓋文件後必須 chown mysql:mysql user.* && chmod 600 user.*,否則 MySQL 拒絕讀取。
  3. 匿名用戶清理:重置密碼後務必執行 DELETE FROM mysql.user WHERE User=''; FLUSH PRIVILEGES;。
  4. 密碼複雜度插件:若啟用 validate_password,新密碼需滿足長度/大小寫/數字/特殊字符要求。

總結

「知舊用 ALTER USER、忘舊用 skip-grant-tables、遷移用 mysqldump --all-databases 導出再導入」是正規三板斧。十六進制編輯、文件覆蓋屬「非常手段」,僅在極端受限環境最後手段使用,事後必須重建實例確保元數據一致性。

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