### 2.4.3安装和使用MySQL启动守护程序
macOS使用启动守护进程来自动启动、停止和管理进程和应用程序,如MySQL。
默认情况下,macOS上的安装包(DMG)会安装一个名为`/Library/LaunchDaemons/com。神谕oss。mysql。mysqld。普利斯特`包含类似于以下内容的plist定义:
```
Label com.oracle.oss.mysql.mysqld
ProcessType Interactive
Disabled
RunAtLoad
KeepAlive
SessionCreate
LaunchOnlyOnce
UserName _mysql
GroupName _mysql
ExitTimeOut 600
Program /usr/local/mysql/bin/mysqld
ProgramArguments
/usr/local/mysql/bin/mysqld
--user=_mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so
WorkingDirectory /usr/local/mysql
```
笔记
一些用户报告说,添加plist DOCTYPE声明会导致启动操作失败,尽管它通过了lint检查。我们怀疑这是复制粘贴错误。包含上述代码段的文件的md5校验和为*d925f05f6d1b6ee5ce5451b596d6baed*.
要启用启动服务,您可以:
- 打开macOS系统首选项,选择MySQL首选项面板,然后执行启动MySQL服务器。
[](<>)
**图2.18 MySQL首选项窗格:位置**
\)
**图2.19 MySQL首选项窗格:实例**
\ 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服务器时,启动安装过程会删除MySQL服务器5.7.7及以下版本安装的旧启动项。
升级还会替换名为的现有启动文件`通用域名格式。神谕oss。mysql。mysqld。普利斯特`.
其他启动相关信息:
- plist条目覆盖`我的cnf`条目,因为它们是作为命令行参数传入的。有关传入程序选项的更多信息,请参阅[第4.2.2节“指定程序选项”](program-options.html).
- 这个**程序参数**节定义了传递到程序中的命令行选项,即`mysqld`在这种情况下是二进制的。
- 默认的plist定义是在考虑不太复杂的用例的情况下编写的。对于更复杂的设置,您可能希望删除一些参数,而是依赖MySQL配置文件,例如`我的cnf`.
- 如果编辑plist文件,则在重新安装或升级MySQL时取消选中安装程序选项。否则,您编辑的plist文件将被覆盖,所有编辑都将丢失。
因为默认的plist定义定义了几个**程序参数**,你可以去掉这些论点中的大部分,转而依靠你的`我的cnf`MySQL配置文件来定义它们。例如:
```
Label com.oracle.oss.mysql.mysqld
ProcessType Interactive
Disabled
RunAtLoad
KeepAlive
SessionCreate
LaunchOnlyOnce
UserName _mysql
GroupName _mysql
ExitTimeOut 600
Program /usr/local/mysql/bin/mysqld
ProgramArguments
/usr/local/mysql/bin/mysqld
--user=_mysql
--basedir=/usr/local/mysql
--datadir=/usr/local/mysql/data
--plugin-dir=/usr/local/mysql/lib/plugin
--log-error=/usr/local/mysql/data/mysqld.local.err
--pid-file=/usr/local/mysql/data/mysqld.local.pid
--keyring-file-data=/usr/local/mysql/keyring/keyring
--early-plugin-load=keyring_file=keyring_file.so
WorkingDirectory /usr/local/mysql
```
在这种情况下[`basedir`](server-system-variables.html#sysvar_basedir), [`数据目录`](server-system-variables.html#sysvar_datadir), [`插件目录`](server-system-variables.html#sysvar_plugin_dir), [`日志错误`](server-system-variables.html#sysvar_log_error), [`pid_文件`](server-system-variables.html#sysvar_pid_file), [`密钥环文件数据`](keyring-system-variables.html#sysvar_keyring_file_data)和[`--早期插件加载`](server-options.html#option_mysqld_early-plugin-load)选项已从默认plist中删除*程序参数*定义,你可能已经在`我的cnf`相反