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

MySQL root 密碼遺失?兩大經典恢復方案完整步驟

     編輯:MySQL 資料庫相關知識

忘記 MySQL root 密碼是常見運維事故。本文提供兩種經典恢復方案,涵蓋「替換授權表」與「跳過授權表啟動」兩種思路,適用於 Windows/Linux 多平台環境。

方案一:替換 mysql 資料庫授權表(暴力但有效)

  1. 下載與當前版本相同的 MySQL 原始碼套件(跨平台通用)。
  2. 將現有 data/mysql 目錄重命名為 oldmysql 備份。
  3. 從原始碼套件的 data/mysql 複製全新的 mysql 目錄至 data/。
  4. 重啟 MySQL 服務,此時授權狀態等同全新安裝,root 空密碼即可登入。
  5. 登入後立即重設 root 密碼並調整權限。
  6. 檢查 oldmysql 內容,確認無惡意竄改;若有備份,執行完整性驗證。

方案二:--skip-grant-tables 跳過權限驗證(標準做法)

  1. 停止 MySQL 服務:
    # Linux
    kill `cat /mysql-data-directory/hostname.pid`
    # 或
    killall -TERM mysqld

    需 root 或同等權限執行。

  2. 啟動跳過授權表模式:
    mysqld_safe --skip-grant-tables &
    # 或
    /bin/safe_mysqld --skip-grant-tables &
  3. 免密登入並修改密碼:
    mysql -h hostname mysql
    # 方式 A:UPDATE 語句
    UPDATE user SET password=PASSWORD('new_pass') WHERE user='root';
    FLUSH PRIVILEGES;
    
    # 方式 B:mysqladmin
    mysqladmin -h hostname -u root password 'new_pass'
    # 或
    mysqladmin -u root flush-privileges password "new_pass"
  4. 重新載入權限表並重啟正常服務:
    mysqladmin -h hostname flush-privileges
    # 或 SQL 執行
    FLUSH PRIVILEGES;

    完成後正常重啟 mysqld 即可。

關鍵提醒

  • 方案二為官方推薦標準流程,風險最低。
  • 修改密碼後務必執行 FLUSH PRIVILEGES 使變更即時生效。
  • 生產環境建議事先建立密碼管理規範,避免單點失效。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved