升级到MacOS 10.15 Catalina后,我无法通过mysql 5.6的 mysqld_safe 启动 mysqld 。
this.myForm.controls.listOptions.reset();
在10.15 Catalina升级之前的工作配置中也有用户参数,但我已在上面删除了该参数,在进一步的测试中,为简单起见,因为 mysqld_safe内的默认用户“ mysql”的值。
10.14的工作配置为:
<?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>
两种配置均无效。我尝试从plist作为/ bin / sh启动。 mysqld_safe 是,而mysqld是由Apple(mysql-5.6.19-osx10.7-x86_64)分发的5.6,自OSX 10.7起一直在计算机上运行。
我可以通过以下方式从终端启动服务器:
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld_safe</string>
<string>--user=mysql</string>
</array>
这将在终端中启动一个进程并且不退出(不退出是预期的行为)。 然后可以使用以下命令从另一个终端关闭该过程:
export PATH=/usr/bin:/bin:/usr/sbin
sudo /usr/local/mysql/bin/mysqld_safe
在生成的mysqld日志中,我找到:
mysqladmin --user=root --password=[MyAdminPassword] shutdown
此错误表明 mysqld 是以用户 root 而不是用户 mysql 启动的。这与 mysql_safe 的意图背道而驰,我认为这是一个重要的线索。 msql_safe 中可能出现意外情况。
在系统日志中,我发现:
Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
这可能是一个合理的注释, mysql_safe 脚本不会退出并保持运行直到数据库服务器关闭。在10.14版本中是相同的,但也许10.15版本有不同的看法。
在Catalina release notes中,我们被告知: “启动的守护程序和启动代理引入了新的用户隐私保护”,并且“启动的属性列表可能无法按预期工作,并阻止了该服务的运行。”
答案 0 :(得分:1)
我在启动时使用的bash脚本遇到了类似的问题。我的Program
键指向用户文件夹中的bash脚本,并且我看到您的ProgramArguments
键也指向用户文件夹。这似乎是不再允许的事情之一(正如您引用的发行说明中提到的那样),至少在没有我想避免的特权更改的情况下如此。
Applications文件夹似乎没有以相同的方式受到限制。我将bash脚本移到“应用程序”文件夹,更新了关联plist中的Program
键,使其指向新位置,重新启动后就可以使用了。
如果这对于您的情况不起作用(或不可行),我与Redditor交换了几则消息,他们发现了另一种解决方案:https://www.reddit.com/r/MacOS/comments/dffpzj/launchd_agent_no_longer_functions_after_catalina/f34ykb6/
答案 1 :(得分:1)
我在 macOS Mojave 10.14.5 上遇到了同样的问题。 我采取了以下措施来解决问题。
cd /Library/LaunchDaemons/
sudo rm homebrew.mxcl.mysql\@5.6.plist
不需要这个文件。 删除此文件是安全的。 稍后将创建正确的文件(在操作 3 中)。
也许没有必要。我重新启动了计算机。
在控制台中键入以下命令。不要使用 sudo(这很重要)。
brew services start mysql@5.6
在以下目录中创建了正确的文件。
~/Library/LaunchAgents/
是
~/Library/LaunchAgents/homebrew.mxcl.mysql@5.6.plist
也许没有必要。我重新启动了计算机。
键入以下命令以查看 mysql 服务器正在运行。
brew services list
答案 2 :(得分:0)
对于它的价值,我遇到了同样的问题,并通过将my.cnf更改为添加来设法解决了该问题:
user = mysql
(以前未指定用户)
这似乎已经解决了问题,因此mysql 5.5自动开始使用/Library/LaunchDaemons/com.mysql.mysql.plist中的以下内容:
<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
<dict>
<key>KeepAlive</key>
<true />
<key>Label</key>
<string>com.mysql.mysqld</string>
<key>ProgramArguments</key>
<array>
<string>/usr/local/mysql/bin/mysqld_safe</string>
<string>--user=mysql</string>
</array>
</dict>
</plist>
即似乎关键是要确保my.cnf指定与plist文件相同的用户。
答案 3 :(得分:0)
在我的情况下,通过以下方法解决了一个不同但略相关的问题:
系统偏好设置> 安全和隐私> 隐私> 全盘访问> 终端>启用。