首次安裝後發現 JDBC 寫入中文亂碼,嘗試修改字元集無效,決定重裝。卸載後重新安裝,Configuration Wizard 最後一步「Start Service」長時間無響應,最終失敗。
Windows 下 MySQL 卸載不乾淨,殘留註冊表鍵值、服務註冊、ProgramData 資料目錄導致新安裝衝突。
regedit → 搜尋「MySQL」→ 刪除所有相關鍵值(HKEY_LOCAL_MACHINE\SOFTWARE\MySQL、HKEY_CURRENT_USER\SOFTWARE\MySQL)C:\Program Files\MySQL\ 整個資料夾C:\ProgramData\MySQL\(隱藏資料夾,需顯示隱藏項目)sc delete MySQL 或 mysqld --remove完成上述步驟後重新安裝,Configuration Wizard 順利通過。
mysql -uroot -p 輸入確信正確的密碼,提示 Access denied。停止服務以 mysqld --skip-grant-tables 啟動可正常連入。
mysql> USE mysql;
mysql> UPDATE user SET authentication_string=PASSWORD('新密碼') WHERE User='root';
mysql> FLUSH PRIVILEGES;
(MySQL 5.7+ 用 authentication_string,5.6 用 password 欄位)
Windows MSI 安裝時建議跳過密碼設定,安裝完成後以 --skip-grant-tables 或無密碼登入再改密碼,避開安裝向導的權限表初始化 Bug。
安裝時選擇 UTF-8,導入既有 GBK 編碼的 SQL 檔,查詢中文全為亂碼。
mysql> SET NAMES gbk;
mysql> SELECT * FROM table; -- 顯示正常
mysqldump --default-character-set=gbk ...iconv -f GBK -t UTF-8 dump.sql > dump_utf8.sqlCHARSET=gbk,應用層連接用 SET NAMES gbk| 階段 | 避坑要點 |
|---|---|
| 安裝前 | 必須徹底清理註冊表、ProgramData、安裝目錄 |
| 安裝中 | 勾選 UTF-8 / utf8mb4;**跳過 root 密碼設定** |
| 安裝後 | 手動執行 mysql_secure_installation 或 SQL 改密碼 |
| 遷移資料 | 統一字元集:匯出端、檔案編碼、匯入端、應用連接四者一致 |
| 驗證 | SHOW VARIABLES LIKE 'char%'; 確認全鏈路 utf8mb4 |
Windows 下 MySQL 部署看似簡單,實則坑多。生產環境強烈建議改用 Linux(Docker/原生),避開 Windows 文件鎖定、服務管理、字元集預設值等一系列平台特有問題。若必須用 Windows,請嚴格遵循上述清單操作。