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

忘記 MySQL Root 密碼?三種安全重置方法(含單用戶模式與跳過授權表)

     編輯:MySQL 資料庫相關知識

場景回顧

伺服器 root 密碼與 MySQL root 密碼均遺失。系統 root 可透過 GRUB 單用戶模式或救援光碟重置,但 MySQL 使用者體系獨立,需另行處理。

方法一:--skip-grant-tables 跳過權限驗證(最標準、最安全)

  1. 停止 MySQL:systemctl stop mysqld
  2. 以跳過授權表模式啟動:mysqld_safe --skip-grant-tables --skip-networking &
  3. 無密碼登入:mysql -u root
  4. 更新密碼並刷新權限:
    mysql> USE mysql;
    mysql> UPDATE user SET authentication_string=PASSWORD('NewPass123!') WHERE User='root';
    mysql> FLUSH PRIVILEGES;
  5. 正常重啟 MySQL:systemctl restart mysqld

方法二:init-file 指定初始化 SQL 檔(適用於受控環境)

  1. 建立 /tmp/reset_root.sql:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123!';
  2. 啟動參數加入:mysqld_safe --init-file=/tmp/reset_root.sql &
  3. 啟動後自動執行腳本,隨後移除檔案並正常重啟。

方法三:直接替換 user 表檔案(不推薦,僅限極端情況)

原文提到複製他機 user.frm/.MYD/.MYI 覆蓋本機 /usr/local/mysql/data/mysql/ 後重啟。缺點:會遺失本機所有使用者帳號與權限設定,且 MySQL 5.7+ 已改用 InnoDB 系統表,.MYD/.MYI 已不存在,此法已失效。

安全性補充說明

重置需具備作業系統 root 權限,代表實體/控制台存取權。若攻擊者已取得 OS root,資料庫密碼保護形同虛設。真正防線在於:

  • 限制 SSH 僅允許金鑰登入、禁用 root 遠端登入;
  • MySQL 僅綁定 127.0.0.1 或內網 IP;
  • 定期審計帳號權限,移除匿名帳號與測試資料庫。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved