mysql - MacOS 10.15 Catalina 下无法使用 launchd plist 启动 mysqld

标签 mysql macos-catalina

升级到 MacOS 10.15 Catalina 后,我无法通过 mysql 5.6 的 mysqld_safe 启动 mysqld

<?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>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
    <string>/Users/owenbrunette/bin/mysqld_safe</string>
    </array>
  </dict>
</plist>

10.15 Catalina 升级之前的工作配置也有用户参数,但为了简单起见,我已经删除了上面的用户参数,并在进一步测试中,因为“mysql”的值是 mysqld_safe.

10.14 的工作配置是:

<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld_safe</string>
<string>--user=mysql</string>
</array>

两种配置都不起作用。我尝试从 plist 中作为/bin/sh 启动。 mysqld_safe 是 Apple 发布的 mysqld 5.6 (mysql-5.6.19-osx10.7-x86_64),并且自 OSX 10.7 起就已在计算机上运行。

我可以从终端启动服务器:

export PATH=/usr/bin:/bin:/usr/sbin
sudo /usr/local/mysql/bin/mysqld_safe

在终端中启动一个进程并且不退出(不退出是预期的行为)。 然后可以从另一个终端关闭该进程:

mysqladmin --user=root --password=[MyAdminPassword] shutdown

在生成的 mysqld 日志中我发现:

Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!

此错误表明 mysqld 是作为用户 root 启动的,而不是作为用户 mysql 启动的。这与mysql_safe的意图相悖,我认为是一个重要的线索。 msql_safe 中可能出现异常行为。

在系统日志中我发现:

... com.apple.xpc.launchd[1] (com.apple.xpc.launchd.domain.system): Session adoption is only allowed in user domains.

这可能是公平的评论,mysql_safe脚本不会退出并保持运行直到数据库服务器关闭。这在 10.14 下是相同的,但也许 10.15 会有不同的看法。

在卡塔利娜 release notes我们被告知: “启动守护程序和启动代理引入了新的用户隐私保护”和“启动属性列表可能无法按预期工作并阻止服务运行”。

最佳答案

我在启动时使用的 bash 脚本遇到了类似的问题。我的 Program 键指向我的 User 文件夹中的 bash 脚本,并且我看到您的 ProgramArguments 键也指向您的 User 文件夹。这似乎是不再允许的事情之一(正如您引用的发行说明中提到的那样),至少在没有我想避免的特权更改的情况下。

应用程序文件夹似乎没有以同样的方式受到限制。我将 bash 脚本移至“应用程序”文件夹,更新了关联 plist 中的 Program 键以指向新位置,重新启动后,它就工作了。

如果这对您的情况不起作用(或不可行),我与 Reddit 用户交换了几条消息,他找到了不同的解决方案:https://www.reddit.com/r/MacOS/comments/dffpzj/launchd_agent_no_longer_functions_after_catalina/f34ykb6/

关于mysql - MacOS 10.15 Catalina 下无法使用 launchd plist 启动 mysqld,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58324460/

相关文章:

mysql - 这是 MySQL 中更新查询的正确方法吗?

mysql - COUNT(*) 计数不正确

macos - 无法打开 Visual Studio Code,因为 "Apple cannot check it for malicious software"

macos - 如何在 Mojave/Catalina 下从后台(基于 launchctl)进程录制音频?

macos - 无法清理 macOS Catalina 上的空间。 "Other"从 500GB 中取出 370GB,其他工具显示了一半

macos - 升级到 macOS Catalina 后找不到 Conda

php - Bootstrap 自动完成(提前输入)不起作用

php - 我如何知道 Android 应用程序 phpmyadmin(xampp) 的大学 IP 地址

mysql - XAMPP 与 Mac OS Catalina 的问题

mysql - 模式匹配如 Select Query