D:\mysql-8.0(路徑勿含空格、中文)在解壓目錄建立 my.ini,內容如下(根據記憶體調整):
[mysqld]
# 基礎路徑
basedir=D:/mysql-8.0
datadir=D:/mysql-8.0/data
port=3306
# 字符集
character_set_server=utf8mb4
collation_server=utf8mb4_general_ci
# 連線設定
max_connections=500
wait_timeout=600
# InnoDB 核心參數(假設 8GB 記憶體)
innodb_buffer_pool_size=4G
innodb_log_file_size=512M
innodb_log_files_in_group=3
innodb_flush_log_at_trx_commit=2
innodb_file_per_table=1
# 慢查詢
slow_query_log=1
slow_query_log_file=D:/mysql-8.0/logs/slow.log
long_query_time=1
# 二進制日誌(主從同步需求)
log-bin=D:/mysql-8.0/logs/mysql-bin
server-id=1
binlog_format=ROW
expire_logs_days=7
# 其他
explicit_defaults_for_timestamp=1
default_authentication_plugin=mysql_native_password
# 以管理員身分開啟 CMD,切換至 bin 目錄
cd D:\mysql-8.0\bin
# 初始化(會生成隨機 root 密碼,輸出在錯誤日誌中)
mysqld --initialize --console
重要:記下螢幕顯示的臨時密碼,如 A temporary password is generated for root@localhost: xYz123!@#
# 安裝服務
mysqld --install MySQL80 --defaults-file="D:\mysql-8.0\my.ini"
# 啟動服務
net start MySQL80
# 使用臨時密碼登入
mysql -u root -p
# 修改密碼(MySQL 8.0 語法)
ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongPass123!';
FLUSH PRIVILEGES;
# 執行安全腳本(可選)
mysql_secure_installation
# 測試連線
mysql -u root -p -e "SELECT VERSION(); SHOW DATABASES;"
# 檢查字符集
mysql -u root -p -e "SHOW VARIABLES LIKE 'character_set%';"
| 現象 | 原因 | 解決 |
|---|---|---|
| 服務啟動失敗 | datadir 權限、my.ini 路徑錯誤、端口被佔用 | 檢查錯誤日誌 .err,確保 data 目錄可寫入 |
| 中文亂碼 | 字符集不一致 | 統一設定 utf8mb4,連線端執行 SET NAMES utf8mb4 |
| 無法遠端連線 | 防火牆、bind-address、用戶 host 限制 | 開放 3306,建立 'user'@'%',重啟服務 |
不同版本安裝至不同目錄,使用不同端口(3306, 3307...)與服務名,各自擁有獨立 my.ini 與 data 目錄。
手動安裝 MySQL 具備完全可控性,適合開發測試與特殊部署需求。關鍵在於:正確規劃目錄結構、精心調整 my.ini 核心參數、妥善管理 root 密碼與權限。生產環境建議使用官方安裝包或容器化部署以獲得更好維護性。