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

Windows 下將 MySQL 註冊為系統服務並實現開機自動啟動

     編輯:MySQL 資料庫相關知識

問題背景

使用 MySQL 免安裝壓縮包 (ZIP/解壓版) 時,雖然檔案部署完成,但 不會自動註冊為 Windows 服務,導致重開機後需手動啟動。本文提供完整的服務註冊、配置檔部署與驗證流程。

三步驟完成服務註冊

  1. 註冊服務 (管理員權限 CMD):
    c:\mysql\bin\mysqld-nt -install
    (移除服務用 mysqld-nt -remove,MySQL 5.0+ 通用 mysqld)。
  2. 部署配置檔 my.ini:
    將解壓目錄下的 my-medium.ini (或其他範本) 重命名為 my.ini,修改關鍵路徑後複製至以下任一優先讀取位置:
    C:\Windows\my.ini、C:\WinNT\my.ini、安裝目錄\my.ini (需啟動參數 --defaults-file 指定)。
  3. 啟動/控制服務:
    net start MySQL / net stop MySQL / net restart MySQL (或 sc start/stop MySQL)。

標準 my.ini 完整範本 (MySQL 5.0 精靈產生)

[client]
port=3306

[mysql]
default-character-set=latin1

[mysqld]
# 基礎網路與路徑
port=3306
basedir="C:/Program Files/MySQL/MySQL Server 5.0/"
datadir="C:/Program Files/MySQL/MySQL Server 5.0/Data/"
default-character-set=latin1
default-storage-engine=INNODB
sql-mode="STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION"

# 連線管理
max_connections=100

# 查詢快取 (視工作負載調整)
query_cache_size=0

# 資料表快取
table_cache=256

# 臨時表大小限制
tmp_table_size=5M

# 執行緒快取
thread_cache_size=8

# === MyISAM 專用 ===
myisam_max_sort_file_size=100G
myisam_max_extra_sort_file_size=100G
myisam_sort_buffer_size=8M
key_buffer_size=8M
read_buffer_size=64K
read_rnd_buffer_size=256K
sort_buffer_size=212K

# === InnoDB 專用 ===
innodb_additional_mem_pool_size=2M
innodb_flush_log_at_trx_commit=1
innodb_log_buffer_size=1M
innodb_buffer_pool_size=8M
innodb_log_file_size=10M
innodb_thread_concurrency=8

# 註解:跳過 InnoDB 可節省資源
# skip-innodb

關鍵參數調整指引

參數建議調整方向說明
basedir / datadir必須指向實際安裝與資料目錄使用正斜線 / 或雙反斜線 \\
innodb_buffer_pool_size專用資料庫伺服器設為物理記憶體 70-80%InnoDB 核心效能關鍵,32 位系統受限 2-3.5GB
key_buffer_size不超過記憶體 30%,最小 8-64MBMyISAM 索引快取,亦供內部臨時表使用
max_connections依應用併發度調整,配合 open-files-limit每連線消耗檔案描述符
query_cache_size唯讀多、資料少變動大則開啟 (如 64M);寫入頻繁設 0避免快取失效開銷
innodb_flush_log_at_trx_commit1=完整 ACID (預設);0/2=高效能犧牲 1 秒內持久性視業務容忍度決定

驗證服務狀態

  1. services.msc 確認 MySQL 服務狀態為「執行中」,啟動類型為「自動」。
  2. 命令列測試:mysql -u root -p -e "SELECT VERSION();"
  3. 查看錯誤日誌 (data 目錄下 主機名.err) 排查啟動失敗原因。

常見陷阱與解決

  • 多版本衝突: 確保 PATH 環境變數只包含目標版本 bin 目錄,或用完整路徑呼叫 mysqld。
  • 配置檔未生效: 用 mysqld --help --verbose | findstr /C:"my.ini" 查看實際讀取順序,必要時啟動參數加 --defaults-file="C:\Path\my.ini"。
  • 權限不足: 註冊服務、寫入 C:\Windows 需管理員權限;資料目錄需授予服務帳號 (預設 LocalSystem) 完整控制權。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved