如何在BOOT上的macOS上启动MariaDB(如MySQL)?

l00*_*com 6 macos mariadb

我使用HomeBrew在一个全新的macOS 10.11服务器设置上安装了MariaDB.当我手动启动它时服务器运行良好,但我无法让它在启动时自动启动(不是登录).我曾经sudo brew services start mariadb在/ Library/LaunchDaemons中创建一个launchd脚本,但它不起作用.没有运行mariadb,没有mariadb错误日志.它似乎默默地失败了.某处必须有一些相关的日志,但我不知道在哪里.

当这不起作用时,我尝试制作我自己的启动脚本,首先让它运行mysql.server start,但失败了.使用完整路径和适当的权限,但它永远不会工作.

然后我从自制的自己的launchd plist中复制了一些代码并制作了我自己的plist,运行mysqld_safe,这也不起作用:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE truncated for easier forum viewing>
<plist version="1.0">
<dict>
    <key>Label</key>
        <string>com.macfixer.mariadb</string>
    <key>ProgramArguments</key>
        <array>
            <string>/usr/local/opt/mariadb/bin/mysqld_safe</string>
            <string>--datadir=/usr/local/var/mysql</string>
        </array>
    <key>WorkingDirectory</key>
        <string>/usr/local/var</string>

    <key>Disabled</key>
        <false/>
    <key>RunAtLoad</key>
        <true/>

    <key>StandardOutPath</key>
        <string>/logs/mariadb.out.log</string>
    <key>StandardErrorPath</key>
        <string>/logs/mariadb.error.log</string>
</dict>
</plist>
Run Code Online (Sandbox Code Playgroud)

上面没有在mariadb错误日志或StandardErrorPath错误日志中留下任何痕迹.但是它确实在StandardOutPath日志中留下了一些内容.看起来mariadb正在启动,它只是......不是.

180326 08:37:27 mysqld_safe登录到'/usr/local/var/log/mysqld-error.log'.

180326 08:37:28 mysqld_safe用/ usr/local/var/mysql中的数据库启动mysqld守护进程

但同样,如果我mysql.server start在计算机启动并登录后运行,MariaDB根本就没有问题.但是从launchd开始,它似乎只是默默地立即退出.

l00*_*com 3

事实证明,这个非常烦人的问题有一个非常简单的答案。

让 MariaDB 安装归 _mysql 所有: sudo chown -R _mysql: /usr/local/var/mysql

就是这样!这样做之后,它就完美地工作了。

为什么自制安装程序不处理它安装的软件的权限?为什么数据库不写入自己的错误日志来指出存在权限问题?为什么 launchd 脚本中的 stderr 或 stdout 没有提示存在权限问题或根本没有任何问题?

... 我不知道。我将其称为错误并继续。但更改 mariadb 安装文件夹的权限完全解决了问题。这是一个巨大的解脱。