首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫

Windows 下安裝多個 MySQL 實例完整圖文教程 (服務註冊法)

     編輯:MySQL 資料庫相關知識

核心原理

Windows 服務管理器 (SCM) 區分服務名稱,同一可執行檔可註冊多個不同名稱的服務,各自指向不同 my.ini 與資料目錄。

步驟總覽

  1. 正常安裝第一個實例 (如 D:\MySQL,Port 3306)。
  2. 備份安裝目錄 → 解除安裝 (移除服務與註冊表)。
  3. 還原備份目錄 → 安裝第二個實例 (如 D:\MySQL2,Port 3307)。
  4. 以 mysqld --install <服務名> --defaults-file=<路徑> 手動註冊第一個實例服務。
  5. 修改註冊表 ImagePath 注入 --defaults-file 參數。
  6. 啟動兩個服務驗證。

詳細操作

1. 第一個實例安裝與備份

# 安裝至 D:\MySQL,Port 3306
# 測試正常後
xcopy D:\MySQL D:\MySQL_backup /E /I /H

2. 解除安裝並安裝第二實例

# 控制台解除安裝 MySQL
# 安裝第二實例至 D:\MySQL2,修改 my.ini:
[mysqld]
port=3307
datadir=D:/MySQL2/data
socket=MySQL2

3. 手動註冊第一實例服務

cmd 管理員模式
cd D:\MySQL\bin
mysqld --install MySQL1 --defaults-file="D:\MySQL\my.ini"

4. 註冊表修正 ImagePath (關鍵)

regedit
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\MySQL1
ImagePath 原值: "D:\MySQL\bin\mysqld.exe" MySQL1
修改為: "D:\MySQL\bin\mysqld.exe" --defaults-file="D:\MySQL\my.ini" MySQL1

注意: --defaults-file 必須在服務名稱 之前,且路徑含空格需雙引號。

5. 啟動驗證

net start MySQL1
net start MySQL2  # 第二實例安裝時已自動註冊

# 連線測試
mysql -u root -P 3306 -h 127.0.0.1
mysql -u root -P 3307 -h 127.0.0.1

常見錯誤排查

錯誤原因解決
1067 進程意外終止datadir 路徑錯誤 / 權限不足 / 殘留 log 檔刪除 data 下 *.log、檢查 my.ini 路徑、授權目錄權限
服務名稱衝突重複安裝未清理sc delete MySQL1 移除殘留服務
無法連線防火牆阻擋 Port / bind-address 限制開放 3306/3307、設定 bind-address=0.0.0.0

現代替代方案

  • Docker: docker run -d -p 3306:3306 --name mysql1 -v /data/mysql1:/var/lib/mysql mysql:8.0 秒級啟動多實例,隔離徹底。
  • mysqld_multi: Linux 原生多實例管理工具,單一配置檔管理多組 [mysqld1] [mysqld2]。

手動註冊服務法雖繁瑣,但能深入理解 Windows 服務機制與 MySQL 配置載入順序,是 DBA 必修內功。

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