macOS 現代版本推薦使用 launchd 管理守護進程,替代傳統 StartupItems。本文提供標準 .plist 配置讓 MySQL 開機自啟並異常重啟。
sudo touch /Library/LaunchDaemons/com.mysql.mysqld.plist
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "https://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>KeepAlive</key><true/>
<key>Label</key><string>com.mysql.mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld_safe</string>
<string>--user=mysql</string> <!-- 建議使用 mysql 專用用戶,非 root -->
</array>
<key>RunAtLoad</key><true/>
<key>StandardErrorPath</key><string>/var/log/mysql/error.log</string>
<key>StandardOutPath</key><string>/var/log/mysql/output.log</string>
</dict>
</plist>
關鍵說明:
KeepAlive:進程異常退出自動重啟RunAtLoad:開機載入時立即啟動--user=mysql:安全性最佳實踐,避免 root 權限運行sudo mkdir -p /var/log/mysql && sudo chown mysql:mysql /var/log/mysql# 載入並設定開機自啟
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysqld.plist
# 檢查狀態
sudo launchctl list | grep mysql
# 手動啟動/停止(不重開機)
sudo launchctl start com.mysql.mysqld
sudo launchctl stop com.mysql.mysqld
# 移除自啟
sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist
官方 MySQLStartupItem.pkg 安裝至 /Library/StartupItems/MySQLCOM,屬舊式機制,macOS 10.10+ 仍相容但不推薦新部署使用。launchd 方案更穩健、支援日誌重導向與資源限制。
使用 launchd 管理 MySQL 是 macOS 現代部署的標準做法,配置簡單、功能完整,建議生產環境採用。