2.4.3 安装 MySQL 启动守护程序

macOS 使用启动守护程序自动启动,停止和 Management 进程和应用程序(例如 MySQL)。

默认情况下,macOS 上的安装包(DMG)将安装名为/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>

Note

一些用户报告说,添加 plist DOCTYPE 声明会导致启动的操作失败,尽管它通过了 lint 检查。我们怀疑这是复制 n 粘贴错误。包含以上代码段的文件的 md5 校验和为* 24710a27dc7a28fb7ee6d825129cd3cf *。

要启用启动的服务,您可以:

图 2.20 MySQL 首选项窗格:位置

图 2.21 MySQL 首选项窗格:用法

shell> cd /Library/LaunchDaemons
shell> sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
shell> sudo launchctl load -w com.oracle.oss.mysql.mysqld.plist

Note

升级 MySQL 服务器时,启动的安装过程将删除与 MySQL 服务器 5.7.7 及更低版本一起安装的旧启动项。

同样,升级将替换您现有的具有相同名称的启动文件。

已启动的其他相关信息:

因为默认的 plist 定义定义了几个 ProgramArguments ,所以您可能会删除其中的大多数参数,而是依靠my.cnf MySQL 配置文件来定义它们。例如:

<?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>WorkingDirectory</key>  <string>/usr/local/mysql</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/mysql/bin/mysqld</string>
            <string>--user=_mysql</string>
        </array>
</dict>
</plist>

在这种情况下,basedirdatadirplugin_dirlog_errorpid_file选项已从 plist 定义中删除,然后您可以在my.cnf中定义它们。

首页