【发布时间】:2020-02-07 23:45:54
【问题描述】:
升级到 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 升级之前的工作配置也有 user 参数,但我在上面删除了它,在进一步测试中,为简单起见,“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 和 mysqld 是 Apple 分发的 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 有不同的看法。
在 Catalina release notes 我们被告知: “启动守护进程和启动代理引入了新的用户隐私保护”和“启动的属性列表可能无法按预期工作并阻止服务运行”。
【问题讨论】:
标签: mysql macos-catalina