MySQL 官方提供的 ZIP 免安裝版(綠色版)適合開發環境快速部署、多版本共存、便攜式使用。本文詳細記錄 MySQL 5.7.13 x64 在 Windows 環境下的完整安裝、配置、啟動與驗證流程,包含 my.ini 核心配置詳解與常見問題排查。
https://dev.mysql.com/downloads/mysql/ # 選擇:Windows (x86, 64-bit), ZIP Archive # 文件名:mysql-5.7.13-winx64.zip
# 建議路徑:無中文、無空格、非系統盤 D:\MySQL\mysql-5.7.13-winx64 # 目錄結構: # bin/ 可執行文件 # docs/ 文檔 # include/ 頭文件 # lib/ 庫文件 # share/ 字符集、錯誤信息、時區數據
在安裝根目錄下創建 my.ini(MySQL 啟動會自動讀取當前目錄、系統目錄、安裝目錄下的 my.ini/my.cnf)
[mysql] # 客戶端默認字符集 default-character-set=utf8mb4 [mysqld] # 基礎服務配置 port = 3306 basedir = D:\MySQL\mysql-5.7.13-winx64 datadir = D:\MySQL\mysql-5.7.13-winx64\data tmpdir = D:\MySQL\mysql-5.7.13-winx64\tmp # 字符集與校對 (關鍵!避免亂碼) character-set-server = utf8mb4 collation-server = utf8mb4_general_ci # 連接與並發 max_connections = 500 max_connect_errors = 1000000 thread_cache_size = 50 table_open_cache = 2000 # InnoDB 核心參數 (Windows 優化) default-storage-engine = INNODB innodb_buffer_pool_size = 1G # 物理內存 50-70%,開發機可調小 innodb_log_file_size = 256M innodb_log_buffer_size = 32M innodb_flush_log_at_trx_commit = 2 # 開發環境可設 2 提升寫入,生產必須 1 innodb_flush_method = normal # Windows 無 O_DIRECT,用 normal innodb_file_per_table = ON innodb_buffer_pool_dump_at_shutdown = ON innodb_buffer_pool_load_at_startup = ON # 日志配置 log-error = D:\MySQL\mysql-5.7.13-winx64\logs\error.log slow_query_log = 1 slow_query_log_file = D:\MySQL\mysql-5.7.13-winx64\logs\slow.log long_query_time = 1 log_queries_not_using_indexes = 1 # 二進制日志 (主從/恢復必備) log-bin = D:\MySQL\mysql-5.7.13-winx64\logs\binlog binlog_format = ROW expire_logs_days = 7 max_binlog_size = 500M # 安全與兼容 sql_mode = STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION skip-name-resolve explicit_defaults_for_timestamp = 1 # 臨時表優化 tmp_table_size = 64M max_heap_table_size = 64M
# 必須手動創建,否則初始化失敗 mkdir D:\MySQL\mysql-5.7.13-winx64\data mkdir D:\MySQL\mysql-5.7.13-winx64\logs mkdir D:\MySQL\mysql-5.7.13-winx64\tmp
cd /d D:\MySQL\mysql-5.7.13-winx64\bin
mysqld --install MySQL57 # 成功輸出:Service successfully installed. # 移除服務命令: # mysqld --remove MySQL57
mysql -u root -p # 輸入初始化輸出的臨時密碼
CREATE USER 'dev'@'%' IDENTIFIED BY 'DevPassword123!'; GRANT ALL PRIVILEGES ON *.* TO 'dev'@'%' WITH GRANT OPTION; FLUSH PRIVILEGES;
# 登錄驗證
mysql -u root -p -e "SELECT VERSION(); SHOW DATABASES;"
# 預期輸出:
# +-------------------------+
# | VERSION() |
# +-------------------------+
# | 5.7.13 |
# +-------------------------+
# +--------------------+
# | Database |
# +--------------------+
# | information_schema |
# | mysql |
# | performance_schema |
# | sys |
# +--------------------+
# 創建測試庫表
mysql -u root -p -e "
CREATE DATABASE test_db CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
USE test_db;
CREATE TABLE t_user (id BIGINT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(50), create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP);
INSERT INTO t_user(name) VALUES ('張三'), ('李四');
SELECT * FROM t_user;
"
| 問題現象 | 原因分析 | 解決方案 |
|---|---|---|
| 初始化報錯:data 目錄不為空 | 殘留文件 | 刪除 data 目錄下所有文件重新初始化 |
| 啟動失敗:The service did not respond | 配置錯誤/端口衝突/權限 | 檢查 error.log;確認 3306 未被佔用;以管理員運行 CMD |
| 中文亂碼 | 字符集不一致 | 統一 my.ini 設置 utf8mb4;連接字符串指定 characterEncoding=utf8mb4 |
| 遠程連接失敗 | 防火牆/權限/bind-address | 防火牆放行 3306;創建 '%' 用戶;my.ini 無 skip-networking/bind-address=127.0.0.1 |
| 密碼過期提示 | 5.7 默認密碼過期策略 | ALTER USER 'root'@'localhost' PASSWORD EXPIRE NEVER; 或定期修改密碼 |
| InnoDB 錯誤:log file size mismatch | 修改 innodb_log_file_size 後未重建 | 停止服務 → 刪除 data/ib_logfile* → 重啟服務 |