MySQL 兩大經典運維痛點:Root 密碼遺忘重置、Can't connect to MySQL server on 'localhost' (10061) 連線失敗。本文整理官方標準流程與實戰排查清單,涵蓋 Linux/Windows 双平台。
systemctl stop mysqld (Linux) / 服務管理器停止 (Windows)# Linux 前台啟動 (另開終端)
mysqld_safe --skip-grant-tables --skip-networking &
# Windows 命令列 (以管理員身份)
mysqld --skip-grant-tables --skip-networking
mysql -u root-- MySQL 5.7 / 8.0 (推薦)
USE mysql;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
FLUSH PRIVILEGES;
-- 兼容舊版 (5.6 及以下)
UPDATE user SET authentication_string = PASSWORD('NewStrongPass123!') WHERE User = 'root' AND Host = 'localhost';
FLUSH PRIVILEGES;
systemctl restart mysqld / 重啟 Windows 服務mysql -u root -p'NewStrongPass123!'Can't connect to MySQL server on 'localhost' (10061) 表示 TCP 連線被拒絕,通常為服務未啟動、埠衝突、配置錯誤、防火牆或系統補丁導致。
| 步驟 | 命令/操作 | 預期結果 |
|---|---|---|
| 服務狀態 | services.msc → MySQL → 狀態「正在執行」 | 若停止 → 啟動;若啟動失敗 → 查看事件檢視器 |
| 埠監聽 | netstat -ano | findstr 3306 | 顯示 LISTENING 且 PID 對應 mysqld |
| 配置檔 | 檢查 my.ini [mysqld] 區段 port=3306、bind-address=0.0.0.0 | 無語法錯誤、路徑正確 |
| 防火牆 | 入站規則允許 TCP 3306 | 或暫時關閉防火牆測試 |
| Hosts 檔 | C:\Windows\System32\drivers\etc\hosts 含 127.0.0.1 localhost | 無異常重導向 |
-- 方案 A:重建服務 (針對服務損壞)
mysqld --remove
mysqld --install
net start mysql
-- 方案 B:刪除 my.ini 讓安裝程式重建 (謹慎!先備份)
del C:\Windows\my.ini
del C:\ProgramData\MySQL\MySQL Server 5.x\my.ini
-- 以管理員身份執行安裝目錄 bin\mysqld.exe --install
-- 方案 C:直接執行 mysqld.exe 排查啟動錯誤
cd "C:\Program Files\MySQL\MySQL Server 5.x\bin"
mysqld --console
-- 觀察控制台輸出錯誤訊息
df -h / 磁碟管理 → 確保資料目錄分區有足夠剩餘空間 (建議 >20%)my.cnf/my.ini 中 datadir、basedir、tmpdir 路徑存在且權限正確 (MySQL 用戶可讀寫)ib_logfile* 重啟重建現象: 安裝微軟 9 月補丁 KB967723 (TCP/IP 更新) 後,重啟伺服器導致 MySQL 10061。
原因: 補丁修改 TCP/IP 協議棧行為,影響 MySQL 埠綁定/監聽。
臨時解法: 控制台 → 程式和功能 → 檢視已安裝的更新 → 解除安裝 KB967723 → 重啟伺服器。
長期建議: 測試環境驗證補丁相容性後再推生產;關注 MySQL 官方釋出的相容性修復版本。
netstat -tlnp | grep 3306 或 Prometheus mysqld_exporter 監控埠存活、服務狀態。--skip-grant-tables 重置流程,確保團隊熟悉操作。掌握這兩大經典故障的標準化處理流程,能讓 MySQL 運維從「慌亂救火」轉為「有序處置」,大幅縮短 MTTR (平均修復時間)。