MySQL 在 Windows 上安裝看似簡單,實則暗藏「服務建立失敗、密碼殘留、防火牆規則誤判、遠程連線被拒、配置檔位置混淆」五大坑。本文逐一拆解錯誤現象、根因與標準解法,助你一次安裝成功。
現象:安裝精靈結束前報錯,服務未建立。
根因:殘留舊服務註冊。
解法:
# 管理員 CMD/PowerShell
sc delete mysql
# [SC] DeleteService SUCCESS
# 重開機後重新安裝,或直接卸載→重開機→安裝
關鍵補充:控制台解除安裝後,**必須手動刪除** C:\Documents and Settings\All Users\Application Data\MySQL (XP/2003) 或 C:\ProgramData\MySQL (Vista/7/10/11),否則舊配置、密碼雜湊會被下一次安裝讀取。
現象:預期只有 New/Confirm,卻多出 Current password。
根因:同錯誤 1,ProgramData\MySQL 未清乾淨,安裝程式偵測到舊實例配置。
解法:徹底刪除 ProgramData\MySQL 後重裝。若記得舊密碼可填入,否則只能重裝。
日誌片段:
Adding firewall rule for MySQL55 on port 3306.
Adding firewall rule failed.
netsh.exe firewall add portopening protocol=TCP port=3306 ...
Unexpected response from netsh: 確定
netsh.exe advfirewall firewall add rule ...
下列命令沒有找到: advfirewall
根因:安裝程式呼叫 netsh 解析中文回應「確定」失敗,且嘗試用 advfirewall (Vista+ 專用) 在 XP 上執行找不到命令。
解法:
三大可能原因:
解法:
# 1. 授權 root 遠程登入 (命令列客戶端登入後)
mysql> USE mysql;
mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'yourpassword';
mysql> FLUSH PRIVILEGES;
mysql> SHOW GRANTS FOR 'root'@'%';
# 2. 或建立專用遠程使用者
mysql> INSERT INTO mysql.user (Host,User,Password,ssl_cipher,x509_issuer,x509_subject)
VALUES ('%','remoteuser',PASSWORD('remotepass'),'','','');
# 3. 修改綁定位址 (my.ini [mysqld] 區段)
bind-address=0.0.0.0
# 重啟服務
net stop mysql & net start mysql
機制:
--defaults-file="C:\Program Files\MySQL\MySQL Server 5.5\my.ini 服務啟動參數指定mysql、mysqldump 等**不自動讀取** Server 目錄下的 my.ini解法:在 C:\Windows\my.ini 或 C:\WINNT\my.ini 建立客戶端配置檔:
[client]
port=3306
socket=/tmp/mysql.sock
重新配置實例時,舊 my.ini 會自動備份為 my。
# 1. 服務狀態
sc query mysql
# 2. 埠監聽
netstat -an | findstr 3306
# 3. 本機連線
mysql -uroot -p
# 4. 遠程連線 (另一台機器)
mysql -h server_ip -uroot -p
Windows 上裝 MySQL,核心只有兩招:**徹底清理舊殘留**、**手動控制防火牆/綁定位址**。Wizard 只是輔助,別對它有幻想。