MySQL 5.7 預設不再內建 data 目錄與預設資料庫,首次安裝必須手動執行初始化命令產生系統表空間、系統表與 root@localhost 無密碼帳號。直接複製 5.6 data 目錄雖能啟動,但無法修改 root 密碼,屬非標準做法。
# 1. 進入 bin 目錄
cd C:\Program Files\MySQL\MySQL Server 5.7\bin
# 2. 執行不安全初始化(生成無密碼 root)
mysqld --initialize-insecure --user=mysql
參數說明:
--initialize-insecure:建立 root@localhost 密碼為空,適合開發/測試環境。--initialize(安全模式):生成隨機密碼,寫入 .err 日誌,生產環境建議使用。--user=mysql:指定資料檔擁有者(Linux 必須,Windows 可省略)。# 啟動服務
net start mysql
# 免密登入
mysql -u root
# 修改密碼 (5.7.6+)
mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
# 或舊版語法
mysql> UPDATE mysql.user SET authentication_string=PASSWORD('new_password') WHERE User='root';
mysql> FLUSH PRIVILEGES;
mysql.user 欄位調整,Password → authentication_string)。mysql_upgrade 雖可遷移,但初始化全新 data 更乾淨、避免殘留相容性問題。validate_password 插件,密碼策略更嚴格。# 建立 mysql 用戶與資料目錄
groupadd mysql
useradd -r -g mysql -s /bin/false mysql
mkdir -p /var/lib/mysql
chown mysql:mysql /var/lib/mysql
# 初始化
mysqld --initialize --user=mysql --datadir=/var/lib/mysql --basedir=/usr/local/mysql
# 啟動腳本
cp /usr/local/mysql/support-files/mysql.server /etc/init.d/mysqld
service mysqld start
MySQL 5.7 強制初始化機制提升了安全基線,杜絕了預設弱密碼風險。請務必使用官方標準 mysqld --initialize[-insecure] 流程,並妥善保管初始隨機密碼(安全模式),完成部署後立即修改為強密碼。