MySQL Installer 執行到「Start Service」或「Apply Configuration」階段彈出:Error Nr. 1364 Field 'authentication_string' doesn't have a default value。
MySQL 5.7+ 將 user 表的密碼欄位從 password 改為 authentication_string,且設為 NOT NULL 無預設值。安裝精靈嘗試建立 root@localhost 時未提供此欄位值,導致寫入失敗。
mysql -u root
USE mysql;
ALTER TABLE `user` MODIFY `authentication_string` TEXT NULL DEFAULT NULL COMMENT 'Password hash';
# 1. 手動安裝服務
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld" --install MySQL57 --defaults-file="C:\Program Files\MySQL\MySQL Server 5.7\my.ini"
# 2. 初始化資料目錄 (產生臨時密碼)
"C:\Program Files\MySQL\MySQL Server 5.7\bin\mysqld" --initialize-insecure --defaults-file="C:\Program Files\MySQL\MySQL Server 5.7\my.ini"
# 或 --initialize (產生隨機密碼,記得看 log)
# 3. 啟動服務
net start MySQL57
# 4. 登入修正密碼
mysql -uroot -p'TempPass' --connect-expired-password -e "
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass!23';
FLUSH PRIVILEGES;"
# 5. 驗證
mysql -uroot -p'NewStrongPass!23' -e "SELECT VERSION();"
my.ini、手動 --install、--initialize,完全可控。data 目錄與 my.ini。