macOS 使用启动守护进程来自动启动、停止和管理进程和应用程序,例如 MySQL。
笔记
在 MySQL 5.6.26 之前,macOS 构建安装的启动项而不是 launchd 守护进程。但是,从 OS X 10.10 (Yosemite) 开始,启动项不起作用。macOS 构建现在安装 launchd 守护进程。
默认情况下,macOS 上的安装包 (DMG) 会安装一个名为 launchd 的文件
/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
,其中包含类似于以下内容的 plist 定义:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key> <string>com.oracle.oss.mysql.mysqld</string>
<key>ProcessType</key> <string>Interactive</string>
<key>Disabled</key> <false/>
<key>RunAtLoad</key> <true/>
<key>KeepAlive</key> <true/>
<key>SessionCreate</key> <true/>
<key>LaunchOnlyOnce</key> <false/>
<key>UserName</key> <string>_mysql</string>
<key>GroupName</key> <string>_mysql</string>
<key>ExitTimeOut</key> <integer>600</integer>
<key>Program</key> <string>/usr/local/mysql/bin/mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysqld.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
</array>
<key>WorkingDirectory</key> <string>/usr/local/mysql</string>
</dict>
</plist>
笔记
一些用户报告说添加 plist DOCTYPE 声明会导致 launchd 操作失败,尽管它通过了 lint 检查。我们怀疑这是复制粘贴错误。包含上述片段的文件的 md5 校验和为 60d7963a0bb2994b69b8b9c123db09df。
要启用 launchd 服务,您可以:
从 MySQL 首选项窗格中 单击启动 MySQL 服务器。
或者,手动加载 launchd 文件。
$> cd /Library/LaunchDaemons $> sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
要将 MySQL 配置为开机自动启动,您可以:
$> sudo launchctl load -w com.oracle.oss.mysql.mysqld.plist
笔记
升级 MySQL 服务器时,launchd 安装过程会删除 MySQL 服务器 5.6.25 及更早版本安装的旧启动项。