MySQL 5.7 引入多項重大變更,Windows 下安裝有幾個「新坑」需特別注意。本文提供從下載到驗證的完整步驟。
data 目錄下 .err 日誌檔中my-default.ini 並重命名為 my.ini,勿自行新建D:\mysql\mysql57mysql複製 my-default.ini 為 my.ini,修改關鍵路徑:
[mysqld]
basedir = D:\mysql
datadir = D:\mysql\data
port = 3306
server_id = 1
character_set_server = utf8mb4
sql_mode = NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES
⚠️ 路徑使用正斜線 / 或雙反斜線 \\,避免單反斜線轉義問題。
Path 新增 D:\mysql\binMYSQL_HOME = D:\mysqlcd D:\mysql\bin
mysqld --install MySQL57 --defaults-file="D:\mysql\my.ini"
mysqld --initialize --console
關鍵:--initialize 會輸出初始密碼,如:
2016-07-16T04:14:27.448186Z 1 [Note] A temporary password is generated for root@localhost: ?wxxx
請立即複製保存此密碼!
net start MySQL57
mysql -u root -p
# 輸入上方初始密碼
-- 修改 root 密碼(5.7 語法)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
-- 建立業務帳號
CREATE USER 'app_user'@'%' IDENTIFIED BY 'AppPass456!';
CREATE DATABASE app_db CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL PRIVILEGES ON app_db.* TO 'app_user'@'%';
FLUSH PRIVILEGES;
| 問題 | 解決方案 |
|---|---|
| Access denied for user 'root' | 停止服務 → mysqld --skip-grant-tables → 空密碼登入 → 更新 mysql.user 表 authentication_string 欄位 → 重啟 |
| 服務啟動失敗 | 檢查 .err 日誌;確認 datadir 權限;端口 3306 未被佔用 |
| Navicat 連線提示密碼過期 | 執行 SET PASSWORD FOR 'root'@'localhost' = PASSWORD('newpass'); |
net start MySQL57 # 啟動
net stop MySQL57 # 停止
mysqld --remove MySQL57 # 移除服務
mysql -u root -p -e "SELECT VERSION(); SHOW VARIABLES LIKE 'character_set%';"
輸出應顯示 5.7.x 版本與 utf8mb4 字符集配置。
完成上述步驟,您擁有一個生產就緒的 MySQL 5.7 Windows 實例。建議後續配置防火牆、啟用慢查詢日誌、設定定時備份。