我使用HomeBrew在一个全新的macOS 10.11服务器设置上安装了MariaDB . 当我手动启动它时服务器运行良好,但我无法让它在启动时自动启动(不是登录) . 我使用 sudo brew services start mariadb
在/ Library / LaunchDaemons中创建了一个launchd脚本,但它不知道在哪里 .
当这不起作用时,我尝试制作我自己的launchd脚本,首先让它运行 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>
上面没有在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开始,它似乎只是默默地立即退出 .
1 回答
原来这个非常恼人的问题有一个非常简单的答案 .
使_mysql拥有的MariaDB安装:
sudo chown -R _mysql: /usr/local/var/mysql
就是这样!完成后,它完美地工作 .
为什么自制软件安装程序不会处理它安装的软件的权限?为什么数据库没有写入自己的错误日志,说有权限问题?为什么没有来自launchd脚本的stderr或stdout暗示存在权限问题,或者根本没有任何问题?
... 我不知道 . 我只是把它称为bug并继续前进 . 但是更改mariadb安装文件夹的权限完全解决了问题 . 这是一个巨大的解脱 .