萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 程式設計 >  >> 資料庫 >> MySQL 教學

Windows 環境手動初始化 MySQL 資料目錄:從 mysql_install_db 移植到 mysqld --bootstrap

背景

Linux 安裝 MySQL 後需執行 mysql_install_db.sh 初始化系統表(mysql 資料庫)、建立預設表空間、產生 SSL 憑證等。Windows 安裝包預置已初始化的 data 目錄,但以下場景需手動初始化:

  • 資料目錄損毀需重建。
  • 同一主機運行多個獨立實例(不同 datadir)。
  • 需極乾淨、無樣本資料的環境。

原理解析:mysql_install_db.sh 核心邏輯

# 1. 執行建表腳本
{ echo "USE mysql;"; cat mysql_system_tables.sql mysql_system_tables_data.sql; } | \
  mysqld --bootstrap --console > /dev/null

# 2. 填充說明表
{ echo "USE mysql;"; cat fill_help_tables.sql; } | \
  mysqld --bootstrap --console > /dev/null

關鍵點:mysqld --bootstrap 以單執行緒、無網路、無權限檢查模式啟動,直接從 stdin 讀取 SQL 執行,完成後自動退出。

Windows 手動初始化步驟

  1. 準備配置檔(my.ini),務必設定:
[mysqld]
basedir = C:/Program Files/MySQL/MySQL Server 5.7
datadir = D:/MySQL/Data_Instance01
  1. 建立目錄結構:
mkdir D:\MySQL\Data_Instance01
mkdir D:\MySQL\Data_Instance01\mysql
  1. 複製並修改 SQL 腳本:
    從 basedir\share 複製 mysql_system_tables.sql、mysql_system_tables_data.sql、fill_help_tables.sql 到暫存目錄(如 C:\Temp\init),**每個檔案開頭插入 USE mysql;**。
  1. 依序執行 bootstrap:
C:\Progra~1\MySQL\MySQL57\bin\mysqld.exe --defaults-file=C:\Path\To\my.ini --bootstrap --console < C:\Temp\init\mysql_system_tables.sql
C:\Progra~1\MySQL\MySQL57\bin\mysqld.exe --defaults-file=C:\Path\To\my.ini --bootstrap --console < C:\Temp\init\mysql_system_tables_data.sql
C:\Progra~1\MySQL\MySQL57\bin\mysqld.exe --defaults-file=C:\Path\To\my.ini --bootstrap --console < C:\Temp\init\fill_help_tables.sql
  1. 啟動服務驗證:
# 安裝為服務(可選)
mysqld --install ManualInitInstance --defaults-file="C:\Path\To\my.ini"
net start ManualInitInstance

# 連線測試
mysql -u root -S D:\MySQL\Data_Instance01\mysql.sock  # 或 -h 127.0.0.1 -P 3306

停止服務指令

mysqladmin -u root shutdown
# 或
net stop ManualInitInstance

MySQL 8.0+ 變化

  • 改用 mysqld --initialize-insecure 或 --initialize(產生隨機 root 密碼寫入 .err 日誌)。
  • 不再需要手動餵入 SQL 腳本,內建資料字典初始化邏輯。
copyright © 萬盛學電腦網 all rights reserved