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

MySQL 5.5 忘記 root 密碼兩種解決方案(Windows 圖文詳解)

     編輯:MySQL 綜合教學

MySQL 5.5 忘記 root 密碼兩種解決方案(Windows 圖文詳解)

MySQL 5.5 是眾多企業生產環境的主力版本。本文提供兩種經實測的 Windows 環境重置方案,含完整命令列操作、任務管理器進程處理、服務重啟驗證全流程,並附帶常見錯誤排查,確保一次成功。


方案一:標準流程(推薦,穩定性最佳)

步驟 1:停止 MySQL 服務

C:\Users\Administrator> cd "C:\Program Files\MySQL\MySQL Server 5.5\bin"
C:\Program Files\MySQL\MySQL Server 5.5\bin> net stop mysql

MySQL 服務正在停止.
MySQL 服務已成功停止。

步驟 2:跳過授權表啟動 mysqld

C:\Program Files\MySQL\MySQL Server 5.5\bin> mysqld --skip-grant-tables

視窗會停留在閃爍游標狀態,表示 mysqld 已在前景運行,**請勿關閉此視窗**。

步驟 3:新開 CMD 視窗無密登入

C:\Program Files\MySQL\MySQL Server 5.5\bin> mysql
Welcome to the MySQL monitor...
mysql> SHOW DATABASES;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| test               |
+--------------------+

步驟 4:更新 root 密碼

mysql> USE mysql;
Database changed
mysql> UPDATE user SET password=PASSWORD('oracle') WHERE User='root';
Query OK, 2 rows affected (0.00 sec)
Rows matched: 2  Changed: 2  Warnings: 0

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.01 sec)

mysql> QUIT
Bye

步驟 5:結束 mysqld 進程並重啟服務

  1. 開啟任務管理器 → 詳細資料 → 找到 mysqld.exe → 結束工作
  2. 任務管理器結束 mysqld.exe
  3. 回到原視窗或新視窗執行:
C:\Program Files\MySQL\MySQL Server 5.5\bin> net start mysql
MySQL 服務正在啟動 .
MySQL 服務已經啟動成功。

步驟 6:驗證新密碼

C:\Program Files\MySQL\MySQL Server 5.5\bin> mysql -uroot -poracle
Welcome to the MySQL monitor...
mysql>

方案二:精簡流程(適用熟手快速操作)

REM 1. 停止服務並清理殘留進程
net stop mysql
REM 任務管理器檢查並結束所有 mysqld.exe

REM 2. 跳過授權表啟動
mysqld.exe --skip-grant-tables
REM 視窗卡住,另開視窗

REM 3. 登入改密
mysql
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD('new_password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> QUIT

REM 4. 結束 mysqld.exe 進程
REM 任務管理器結束

REM 5. 重啟服務並驗證
net start mysql
mysql -u root -pnew_password
that's all.

關鍵細節圖解

任務管理器中結束 mysqld.exe 進程

為什麼必須結束 mysqld.exe 進程?
--skip-grant-tables 是前景進程,非服務模式。若不結束直接 net start mysql,會導致端口 3306 衝突,服務啟動失敗或啟動的是舊進程(仍處於免密模式),新密碼不生效。


常見錯誤與解決

錯誤現象原因解決
ERROR 1045 (28000): Access denied未在 skip-grant-tables 模式下,或未結束舊進程確認 mysqld 視窗仍在運行,任務管理器無殘留 mysqld.exe
UPDATE 0 rows affectedHost 欄位不匹配SELECT User, Host FROM user; 確認所有 root 帳號 Host 值,逐一更新
net start mysql 失敗端口被佔用 / 配置檔錯誤 / 數據目錄權限檢查 3306 端口、錯誤日誌 .err、datadir 權限
密碼修改後仍無法登入未執行 FLUSH PRIVILEGES 或權限快取未刷新必須執行 FLUSH PRIVILEGES;重啟服務可強制刷新

Linux 環境快速參考(5.5 通用)

# 1. 停止服務
service mysql stop
# 或 systemctl stop mysqld

# 2. 跳過授權表啟動
mysqld_safe --skip-grant-tables --skip-networking &

# 3. 改密
mysql -u root
mysql> USE mysql;
mysql> UPDATE user SET password=PASSWORD('newpass') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql> QUIT

# 4. 重啟
service mysql restart
# 或 systemctl restart mysqld

版本差異提醒

  • MySQL 5.5 密碼欄位為 password,使用 PASSWORD() 函數
  • 5.5 不支援 ALTER USER 語句(5.7+ 引入)
  • Windows 5.5 安裝預設路徑通常為 C:\Program Files\MySQL\MySQL Server 5.5\

實戰口訣:停服務 → 開 mysqld 免密視窗 → 新視窗改密 → 殺 mysqld 進程 → 起服務 → 驗證新密。核心陷阱只有一個:**必須手動結束 --skip-grant-tables 的 mysqld.exe 進程**,否則服務無法正常接管端口。

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