D:\mysql\mysql-5.7.17-winx64\ <-- basedir
D:\mysql\mysql-5.7.17-winx64\data\ <-- datadir (初始化後自動生成)
複製 my-default.ini → 重命名 my.ini,內容如下:
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=D:\mysql\mysql-5.7.17-winx64
datadir=D:\mysql\mysql-5.7.17-winx64\data
tmpdir=D:\mysql\mysql-5.7.17-winx64\data # 關鍵:臨時表目錄,缺失會導致啟動失敗
max_connections=200
character-set-server=utf8
default-storage-engine=INNODB
explicit_defaults_for_timestamp=1 # 解決 TIMESTAMP 隱式 DEFAULT 警告
cd /d D:\mysql\mysql-5.7.17-winx64\bin
mysqld --install # 註冊服務 "MySQL"
mysqld --initialize-insecure --user=mysql # 初始化 data 目錄,root 無密碼
# 若報 "data directory has files" → 刪空 data 目錄重試
net start mysql # 啟動服務
| 報錯 | 原因 | 修復 |
|---|---|---|
| 「服務無法啟動,未報告錯誤」 | 未初始化 data 目錄 / tmpdir 缺失 / my.ini 路徑錯 | 執行 mysqld --initialize-insecure、補全 tmpdir、核對 basedir/datadir |
| 系統錯誤 2:找不到指定文件 | 服務註冊路徑含空格未加引號 / 二進制路徑錯誤 | 重裝服務:mysqld --remove → 重新 --install 確保路徑加雙引號 |
| TIMESTAMP implicit DEFAULT deprecated | 5.7 預設 sql_mode 含 NO_ZERO_DATE 等 | my.ini 加 explicit_defaults_for_timestamp=1 |
| initialize specified but data directory has files | data 目錄非空 | 刪空 data 目錄 (或備份後清空) 再初始化 |
mysql -u root -p # 直接回車 (無密碼)
-- 修改密碼
mysqladmin -u root -p password 'NewPwd123!' # -p 後無空格直接跟舊密碼(初始為空)
# 或 SQL 方式
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewPwd123!'; FLUSH PRIVILEGES;
# 系統變量 Path 追加 (注意分號分隔)
;D:\mysql\mysql-5.7.17-winx64\bin
# 之後任意目錄直接輸入 mysql / mysqladmin 即可
bind-address=0.0.0.0 + 防火牆白名單,或僅內網訪問。log_bin、expire_logs_days=7、sync_binlog=1、innodb_flush_log_at_trx_commit=1。innodb_buffer_pool_size = 物理記憶體 60-70%。mysqldump --single-transaction --master-data=2 + 壓縮 + 異地複製。安裝只是起點,配置與維護才是長跑的開始。