我使用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开始,它似乎只是默默地立即退出.
事实证明,这个非常烦人的问题有一个非常简单的答案。
让 MariaDB 安装归 _mysql 所有:
sudo chown -R _mysql: /usr/local/var/mysql
就是这样!这样做之后,它就完美地工作了。
为什么自制安装程序不处理它安装的软件的权限?为什么数据库不写入自己的错误日志来指出存在权限问题?为什么 launchd 脚本中的 stderr 或 stdout 没有提示存在权限问题或根本没有任何问题?
... 我不知道。我将其称为错误并继续。但更改 mariadb 安装文件夹的权限完全解决了问题。这是一个巨大的解脱。
| 归档时间: |
|
| 查看次数: |
686 次 |
| 最近记录: |