macos-installation-launchd.md 6.7 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
### 2.4.3安装和使用MySQL启动守护程序

macOS使用启动守护进程来自动启动、停止和管理进程和应用程序,如MySQL。

默认情况下,macOS上的安装包(DMG)会安装一个名为`/Library/LaunchDaemons/com。神谕oss。mysql。mysqld。普利斯特`包含类似于以下内容的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>
```

笔记

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

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

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

    [](<>)

    **图2.18 MySQL首选项窗格:位置**

    \<img alt=“显示macOS系统首选项搜索框中键入的“MySQL”,以及MySQL首选项窗格左下角突出显示的“MySQL”图标。”src=“images/mac安装程序首选项窗格location.png”height=“598”width=“668”/

    Instances页面包含启动或停止MySQL的选项,初始化数据库将重新创建`数据/`目录卸载卸载MySQL服务器和可选的MySQL首选项面板以及启动信息。

    [](<>)

    **图2.19 MySQL首选项窗格:实例**

    \<img alt=“左侧显示由“活动实例”、“已安装实例”和“数据目录”部分分隔的MySQL实例列表。右侧显示“停止MySQL服务器”按钮、标题为“计算机启动时启动MySQL”的复选框,以及“初始化数据库”和“卸载”按钮。几个字段引用8.0.11作为当前安装的MySQL版本。”src=“images/mac安装程序首选项窗格instances.png”height=“548”width=“668”/

-   或者,手动加载启动的文件。

    ```
    $> 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配置文件来定义它们。例如:


```
<?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>
```

在这种情况下[`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`相反