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

MySQL Root 密碼遺失?三種找回密碼的實戰方法

     編輯:MySQL 資料庫相關知識

忘記 MySQL Root 密碼怎麼辦?完整恢復流程指南

作者在 Linux 安裝 MySQL 後修改 root 密碼,一小時後即忘記,記錄三種找回方法。

方法一:複製 Windows 的 user 表檔案覆蓋(需有備份檔案)

  1. 停止 MySQL:/etc/rc.d/init.d/mysql stop
  2. 複製三個檔案到 /var/lib/mysql/mysql/:
    user.frm(結構)、user.MYD(資料)、user.MYI(索引)
  3. 啟動 MySQL:/etc/rc.d/init.d/mysql start
  4. 用 Windows 的密碼登入,再執行:
    UPDATE user SET Password=PASSWORD('newpwd') WHERE User='root';
  5. 若出現「唯讀」錯誤,修正檔案擁有者與權限:
    chown -R mysql:mysql user.*
    chmod 600 user.*
  6. 重啟 MySQL,再次更新密碼並 FLUSH PRIVILEGES;
  7. 若 Windows 為預設安裝,需清理匿名帳號:
    DELETE FROM user WHERE User=''; DELETE FROM user WHERE Host='%'; FLUSH PRIVILEGES;

缺點: 必須擁有另一套可用的 user.* 檔案。

方法二:--skip-grant-tables 略過權限驗證(最常用、官方推薦)

  1. 關閉 MySQL:killall -TERM mysqld(勿用 kill -9)
  2. 以略過權限啟動:
    Linux: /usr/bin/mysqld_safe --skip-grant-tables &
    Windows: mysqld --skip-grant-tables
  3. 免密碼登入:mysql -u root
  4. 更新密碼:
    USE mysql;
    UPDATE user SET Password=PASSWORD('newpwd') WHERE User='root';
    FLUSH PRIVILEGES;
  5. 或用指令:mysqladmin -u root password 'newpwd'
  6. 重新載入權限:mysqladmin flush-privileges
  7. 關閉並正常重啟 MySQL

方法三:十六進位編輯器直接修改 user.MYD

直接編輯加密後的密碼字串。但密碼儲存位置可能不連續,且仍需參考既有密碼雜湊值,實務上較不建議。

總結建議

方法二最通用、無需備份檔案,建議優先採用。平時應妥善保管密碼,或使用密碼管理工具。

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