首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> MySQL 資料庫 >> MySQL 綜合教學

Windows 下 MySQL 5.7.15 免安裝版部署避坑實錄:從初始化到密碼重置

     編輯:MySQL 綜合教學

Windows 下 MySQL 5.7.15 免安裝版部署避坑實錄:從初始化到密碼重置

MySQL 5.7+ 免安裝版(ZIP 包)部署看似簡單,實則暗藏「data 目錄缺失需初始化」、「臨時密碼獲取」、「skip-grant-tables 修改密碼失效」、「密碼策略導致修改失敗」等多個坑點。本文記錄一次完整的反復試錯過程,提煉出標準化部署 SOP。

一、 環境與目錄規劃

  • 解壓路徑:`E:\DBFiles\mysql-5.7.15-winx64\mysql-5.7.15-winx64\`
  • 配置文件:同目錄下 `my.ini`
  • 數據目錄:`data/`(初始化後自動生成)

二、 核心配置 my.ini(關鍵路徑務必絕對路徑、正斜槓)

[client]
default-character-set = utf8mb4

[mysqld]
port = 3306
basedir = "E:/DBFiles/mysql-5.7.15-winx64/mysql-5.7.15-winx64"
datadir = "E:/DBFiles/mysql-5.7.15-winx64/mysql-5.7.15-winx64/data"
tmpdir  = "E:/DBFiles/mysql-5.7.15-winx64/mysql-5.7.15-winx64/data"
socket  = "E:/DBFiles/mysql-5.7.15-winx64/mysql-5.7.15-winx64/data/mysql.sock"
log-error = "E:/DBFiles/mysql-5.7.15-winx64/mysql-5.7.15-winx64/data/mysql_error.log"

# 開發機適度配置
max_connections = 200
innodb_buffer_pool_size = 512M
innodb_log_file_size = 64M
sql_mode = "STRICT_TRANS_TABLES,NO_ENGINE_SUBSTITUTION,NO_ZERO_DATE,NO_ZERO_IN_DATE,ERROR_FOR_DIVISION_BY_ZERO"
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci

三、 關鍵步驟與避坑記錄

1. 初始化數據目錄(ZIP 包無 data 目錄,必須執行)

mysqld install MySQL5715 --defaults-file="E:\DBFiles\mysql-5.7.15-winx64\mysql-5.7.15-winx64\my.ini"

3. 啟動服務並嘗試登錄

ALTER USER 'root'@'localhost' IDENTIFIED BY 'NewStrongP@ssw0rd!';
FLUSH PRIVILEGES;

5. ⚠️ 坑點:skip-grant-tables 下 ALTER USER 失效

嘗試在 `my.ini` 添加 `skip-grant-tables=1` 重啟後免密登錄修改密碼:

UPDATE mysql.user SET authentication_string = PASSWORD('root') WHERE User = 'root';
FLUSH PRIVILEGES;

6. ⚠️ 坑點:修改密碼後移除 skip-grant-tables 重啟,USE mysql 又提示需修改密碼

原因:`authentication_string` 更新未觸發密碼過期標記重置。需執行標準 ALTER USER 完成重置:

mysql -u root -p'root'
USE mysql;
SHOW TABLES;  -- 成功,無需再次修改密碼

四、 標準化部署 SOP(無坑版)

  1. 解壓 ZIP 到目標目錄
  2. 創建 `my.ini`(路徑絕對、正斜槓、utf8mb4)
  3. 管理員 CMD 進入 `bin` 目錄
  4. `mysqld --initialize --console` **捕獲臨時密碼**
  5. `mysqld install <服務名> --defaults-file=""`
  6. `net start <服務名>`
  7. `mysql -u root -p'<臨時密碼>'`
  8. `ALTER USER 'root'@'localhost' IDENTIFIED BY '<強密碼>'; FLUSH PRIVILEGES;`
  9. (可選)創建業務用戶、授權、防火牆放行 3306

五、 管理工具連接驗證

HeidiSQL / Navicat / DataGrip / MySQL Workbench 均可通過 `127.0.0.1:3306`、用戶 `root`、新密碼正常連接。


Windows 免安裝版 MySQL 部署的核心坑點在於 **5.7 強制密碼策略與 skip-grant-tables 的衝突**。遵循「初始化捕獲臨時密碼 → 直接 ALTER USER 修改 → 禁用 skip-grant-tables」這條主線,拒絕「先 skip-grant-tables 再 UPDATE authorization_string 再 ALTER USER」的繞彎路,即可一次成功,獲得穩定可用的開發實例。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved