1

我已经通过自制软件和这些说明安装了 MySQL 。homebrew 安装的服务是 LaunchAgent,它工作正常,但仅在我的用户登录时运行。我希望 MySQL 始终运行。

我尝试复制homebrew.mxcl.mysql.plist/Library/LaunchAgents,将权限设置为 644 root:wheel,并使用sudo launchctl -w /Library/LaunchAgents/homebrew.mxcl.mysql.plist. 虽然sudo launchctl list显示 plist 已加载且状态为 0,但没有 PID。当我运行时ps aux | grep mysql,我看不到任何相关进程。

手动运行命令有效:/usr/local/opt/mysql/bin/mysqld_safe --datadir=/usr/local/var/mysql --bind-address=0.0.0.0但如果用户注销,MySQL 将退出。

已经有一个关于 stackoverflow 的相关问题,但似乎每个人都在回答如何通过 LaunchAgent 添加服务,该服务在登录时而不是在启动时运行

/Library/LaunchDaemons/homebrew.mxcl.mysql.plist

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" 
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
  <key>KeepAlive</key>
  <true/>
  <key>Label</key>
  <string>homebrew.mxcl.mysql</string>
  <key>ProgramArguments</key>
  <array>
    <string>/usr/local/opt/mysql/bin/mysqld_safe</string>
    <string>--datadir=/usr/local/var/mysql</string>
    <string>--bind-address=0.0.0.0</string>
  </array>
  <key>RunAtLoad</key>
  <true/>
  <key>WorkingDirectory</key>
  <string>/usr/local/var/mysql</string>
</dict>
</plist>

ps辅助

nperkins$ sudo ps aux | grep mysql
nperkins        15345   0.0  0.0  2444056    816 s001  S+    7:02PM   0:00.00 grep mysql

启动ctl列表

nperkins$ sudo launchctl list | grep mysql
-   0   homebrew.mxcl.mysql
4

1 回答 1

0

我想通了。LaunchDaemon plist 正在运行并试图每五秒保持一次活动,但 mysqld_safe 在启动时阻塞,因为数据文件夹/usr/local/var/mysql不在_mysql组中。我将该文件夹的所有权更改为_mysql:wheel,现在它可以工作了。

于 2017-08-05T03:48:34.347 回答