首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

MySQL 5.0 Root 密碼遺忘重置:Windows/Linux 多種實戰方法彙總

     編輯:MySQL 綜合教學

MySQL 5.0 年代版本雖已停止維護,但部分舊系統仍在運行。本文彙總 Windows 與 Linux 下針對 MySQL 5.0 的 Root 密碼重置方法,涵蓋 --init-file、--skip-grant-tables、服務管理等實戰技巧。

方法一:--init-file 自動執行 SQL (最乾淨、適合自動化)

  1. 建立重置 SQL 檔 reset_root.sql:
    ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPass123';
    FLUSH PRIVILEGES;

    MySQL 5.0 不支援 ALTER USER,改用:

    UPDATE mysql.user SET Password=PASSWORD('NewPass123') WHERE User='root';
    FLUSH PRIVILEGES;
  2. 停止服務:net stop mysql (Win) / service mysql stop (Linux)。
  3. 啟動載入初始化檔:
    # Windows
    mysqld-nt --init-file=C:\reset_root.sql
    
    # Linux
    mysqld_safe --init-file=/root/reset_root.sql &
  4. 見日誌顯示 ready for connections 後 Ctrl+C 停止,正常啟動服務。

方法二:--skip-grant-tables 手動修改 (通用、直觀)

Windows 步驟

  1. net stop mysql
  2. 開啟 CMD 視窗 A:mysqld-nt --skip-grant-tables (保持開啟)。
  3. 開啟 CMD 視窗 B:
    mysql -u root mysql
    UPDATE user SET Password=PASSWORD('NewPass123') WHERE User='root';
    FLUSH PRIVILEGES;
    QUIT;
  4. 關閉視窗 A (Ctrl+C),net start mysql。

Linux 步驟

  1. service mysql stop
  2. mysqld_safe --skip-grant-tables &
  3. mysql -u root mysql 執行相同 UPDATE/FLUSH。
  4. pkill mysqld,service mysql start。

方法三:systemd 臨時覆蓋 (現代 Linux 適用)

systemctl edit mysqld
# [Service]
# ExecStart=
# ExecStart=/usr/sbin/mysqld --skip-grant-tables --skip-networking
systemctl daemon-reload && systemctl restart mysqld
# mysql -u root 執行 UPDATE/FLUSH
systemctl revert mysqld && systemctl daemon-reload && systemctl restart mysqld

MySQL 5.0 專屬注意事項

  • 密碼雜湊為 16 字元短雜湊 (pre-4.1):PASSWORD() 產出 16 字元,5.6+ 客戶端預設拒絕。若需相容新客戶端,重置後必須 SET PASSWORD = PASSWORD('...') 產生新版 41 字元雜湊,或客戶端加 --secure-auth=0。
  • 服務名可能為 mysql、mysqld、mysql5:用 chkconfig --list 或 systemctl list-unit-files | grep mysql 確認。
  • 資料目錄預設 /var/lib/mysql,socket /var/lib/mysql/mysql.sock:客戶端連線若報 socket 錯誤,指定 --socket 或建立軟連結 ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock。

驗證清單

  1. mysql -u root -p'NewPass123' -e "SELECT VERSION();" 登入成功。
  2. SELECT User, Host, Password FROM mysql.user WHERE User='root'; 確認雜湊已更新 (41 字元)。
  3. 應用端連線測試通過。

遷移建議

MySQL 5.0 於 2012 年結束生命週期 (EOL),**強烈建議規劃升級至 5.7/8.0 或 MariaDB 10.x** 以獲得安全補丁、效能提升、新功能 (JSON、CTE、窗口函數)。升級路徑:5.0 → 5.1 → 5.5 → 5.6 → 5.7 → 8.0 (逐版 mysql_upgrade)。

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