MySQL 5.1 作為經典長期支援版本,仍有大量存量系統在運行。本文提供經實測驗證的 5.1 版本專屬重置流程,針對 safe_mysqld、mysqld 兩種啟動腳本差異給出精確指令,避免網上過時教程導致的失敗。
password(非 5.7+ 的 authentication_string)safe_mysqld 或 mysqld_safe,視安裝方式而定mysql,需確認實際服務名REM 以管理員身分執行 CMD
net stop MySQL
REM 若服務名不同,用 `sc query` 或 `services.msc` 確認實際名稱
REM 切換到 bin 目錄(請替換實際路徑)
cd "C:\Program Files\MySQL\MySQL Server 5.1\bin"
REM 方式 A:使用 mysqld(前景執行,視窗勿關)
mysqld --skip-grant-tables
REM 方式 B:若有 safe_mysqld 腳本
safe_mysqld --skip-grant-tables &
cd "C:\Program Files\MySQL\MySQL Server 5.1\bin"
mysql -u root
-- MySQL Shell 中執行:
USE mysql;
UPDATE user SET password=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
QUIT;
REM 關閉步驟 2 的視窗(Ctrl+C 或任務管理器結束 mysqld.exe)
net start MySQL
mysql -u root -pNewPass123!
# 1. 停止服務
/etc/init.d/mysql stop
# 或
service mysql stop
# 2. 確認進程已停
ps -ef | grep mysql
kill -9 # 若有殘留
# 3. 跳過授權表啟動(背景執行)
safe_mysqld --skip-grant-tables --skip-networking &
# 4. 無密登入
mysql -u root
# 5. 更新密碼
USE mysql;
UPDATE user SET password=PASSWORD('NewPass123!') WHERE User='root';
FLUSH PRIVILEGES;
QUIT;
# 6. 重啟服務
/etc/init.d/mysql restart
# 或
service mysql restart
# 1. 停止服務
systemctl stop mysql
# 或
/etc/init.d/mysql stop
# 2. 直接啟動 mysqld(需指定資料目錄、socket、pid-file 等參數,建議用方法 A)
# 若必須直啟,參考下方最小參數集:
mysqld --skip-grant-tables --skip-networking \
--datadir=/var/lib/mysql \
--socket=/var/run/mysqld/mysqld.sock \
--pid-file=/var/run/mysqld/mysqld.pid \
--user=mysql &
# 3. 後續同方法 A 步驟 4-6
# 確認密碼已更新
mysql -e "SELECT User, Host, password FROM mysql.user WHERE User='root';"
# 驗證新密碼可登入
mysql -u root -p'NewPass123!' -e "SELECT VERSION();"
# 檢查權限生效
mysql -u root -p'NewPass123!' -e "SHOW GRANTS FOR 'root'@'localhost';"
| 現象 | 可能原因 | 解決 |
|---|---|---|
| UPDATE 影響 0 行 | Host 欄位不匹配(如 '127.0.0.1'、'%') | SELECT User, Host FROM user; 全部更新 |
| 啟動報錯 "Can't create test file" | 資料目錄權限錯誤或 --datadir 指定錯誤 | 確認 mysql 用戶擁有 datadir 讀寫權 |
| Windows 服務啟動失敗 | skip-grant-tables 寫在 [mysql] 而非 [mysqld] 區段 | 移至 [mysqld] 區段 |
| Linux 提示 "unknown variable 'skip-grant-tables'" | 寫在 [client] 或其他區段 | 同左,必須在 [mysqld] |
mysql_native_password,無 caching_sha2_password 相容性問題my.ini;Linux 可能在 /etc/my.cnf、/etc/mysql/my.cnf、/usr/my.cnf 多處,用 mysql --help | grep my.cnf 確認讀取順序親測總結:MySQL 5.1 重置核心就是「停服務 →
safe_mysqld --skip-grant-tables→UPDATE user SET password=PASSWORD(...)→ 重啟」。關鍵在確認服務名、啟動腳本名、Host 欄位值三個變量。建議將本流程寫成腳本納入運維手冊,定期演練。