本文與前文核心步驟一致,這裡以**圖文操作視角**重新整理,強調關鍵畫面與易錯細節。
services.msc → 找到 MySQL → 右鍵 停止。cd C:\Program Files\MySQL\MySQL Server 5.7\binmysqld --skip-grant-tablesmysqld: ready for connections,**不要關閉**。mysql -u rootmysql> 提示符 (無需密碼)。ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123';FLUSH PRIVILEGES;EXIT;net start mysql。mysql -u root -pNewStrongPass123 成功登入。
# 1. 停止
systemctl stop mysqld
# 2. 建立 socket 目錄 (避免啟動失敗)
mkdir -p /var/run/mysqld
chown mysql:mysql /var/run/mysqld
# 3. 跳過權限啟動 (背景)
mysqld --skip-grant-tables --user=mysql --datadir=/var/lib/mysql --socket=/var/run/mysqld/mysqld.sock &
# 4. 免密登入 (指定 socket)
mysql -u root --socket=/var/run/mysqld/mysqld.sock
# 5. 重置密碼 (同 Windows)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123';
FLUSH PRIVILEGES;
EXIT;
# 6. 停止臨時進程
pkill -f "skip-grant-tables"
# 7. 正常啟動
systemctl start mysqld
| 指令 | 範例 | 優點 |
|---|---|---|
| mysqladmin | mysqladmin -u root -p'old' password 'new' | 命令列單指令、適合腳本自動化 |
| SET PASSWORD | SET PASSWORD FOR 'root'@'localhost' = 'new'; | SQL 標準、5.7.6+ 無需 PASSWORD() |
| GRANT ... IDENTIFIED BY | GRANT USAGE ON *.* TO 'root'@'localhost' IDENTIFIED BY 'new'; | 兼容舊版、自動加密 |
mysqld-nt.exe 為舊版 (5.1 前) 執行檔,現代版本皆為 mysqld.exe。--skip-grant-tables 期間**任何人可免密以 root 登入**,務必在安全網路環境操作,完成後立即正常重啟。ERROR 1290: The MySQL server is running with the --skip-grant-tables option so it cannot execute this statement,表示版本限制,需先 FLUSH PRIVILEGES; 再執行 ALTER/SET/GRANT。原文標題:MySQL忘記密碼解決方案
連結:https://www.cnblogs.com/visoeclipse/archive/2010/04/06/1705427.html