Documentation Home
MySQL 8.3 Reference Manual
Related Documentation Download this Manual
PDF (US Ltr) - 40.8Mb
PDF (A4) - 40.9Mb
Man Pages (TGZ) - 294.0Kb
Man Pages (Zip) - 409.0Kb
Info (Gzip) - 4.0Mb
Info (Zip) - 4.0Mb
Excerpts from this Manual

MySQL 8.3 Reference Manual  /  ...  /  Installing and Using the MySQL Launch Daemon

2.4.3 在 macOS 上安装和使用 MySQL 启动守护进程

macOS 使用启动守护进程来自动启动、停止和管理进程和应用程序,例如 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>
            <string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
            <string>--early-plugin-load=keyring_file=keyring_file.so</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>
Note

一些用户报告说,添加 plist DOCTYPE 声明会导致启动守护进程失败,尽管它通过了 lint 检查。我们怀疑这是一个复制粘贴错误。该文件的 MD5 校验和为 d925f05f6d1b6ee5ce5451b596d6baed

要启用启动守护服务,可以:

  • 打开 macOS 系统首选项,选择 MySQL 首选项面板,然后执行 启动 MySQL 服务器

    图 2.7 MySQL 首选项面板:位置

    Shows "MySQL" typed into the macOS System Preferences search box, and a highlighted "MySQL" icon in the bottom left portion of the MySQL Preference Pane.

    “实例”页面包括启动或停止 MySQL 的选项,初始化数据库 重新创建 data/ 目录。卸载 卸载 MySQL 服务器和可选的 MySQL 首选项面板和启动守护信息。

    图 2.8 MySQL 首选项面板:实例

    The left side shows a list of MySQL instances separated by "Active Instance", "Installed Instances", and "Data Directories" sections. The right side shows a "Stop MySQL Server" button, a check box titled "Start MySQL when your computer starts up", and "Initialize Database" and "Uninstall" buttons.

  • 或者,手动加载启动守护文件。

    $> cd /Library/LaunchDaemons
    $> sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
  • 要配置 MySQL 以便在启动时自动启动,可以:

    $> sudo launchctl load -w com.oracle.oss.mysql.mysqld.plist
Note

当升级 MySQL 服务器时,启动守护安装过程将删除旧的启动项,这些项是使用 MySQL 服务器 5.7.7 及以下版本安装的。

升级还将替换现有的启动守护文件 com.oracle.oss.mysql.mysqld.plist

其他启动守护相关信息:

  • plist 条目覆盖 my.cnf 条目,因为它们作为命令行参数传递。有关传递程序选项的更多信息,请参阅 第 6.2.2 节,“指定程序选项”

  • ProgramArguments 部分定义了传递给程序的命令行选项,在这种情况下是 mysqld 二进制文件。

  • 默认的 plist 定义是为简单用例设计的。对于更复杂的设置,您可能想要删除一些参数,而不是依赖于 MySQL 配置文件,例如 my.cnf

  • 如果您编辑了 plist 文件,那么在重新安装或升级 MySQL 时,请取消选择安装程序选项。否则,您编辑的 plist 文件将被覆盖,所有编辑将丢失。

因为默认的 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>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>
            <string>--keyring-file-data=/usr/local/mysql/keyring/keyring</string>
            <string>--early-plugin-load=keyring_file=keyring_file.so</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

在这种情况下,basedirdatadirplugin_dirlog_errorpid_filekeyring_file_data 和 --early-plugin-load 选项从默认的 plist ProgramArguments 定义中删除,这些选项可能在 my.cnf 中定义。