退出 MySQL 而不在 El Capitan 上重新启动

Quit MySQL without it restarting on El Capitan

我是 运行 OS X 10.11 El Capitan 及其内置服务器堆栈(Apache 2.4.16,MySQL 5.6.26)。

我需要退出 mysql,但终止进程会立即重新启动它。

这是我到目前为止尝试过的方法:


终止进程

$ ps aux | grep mysql 获取 PID returns

74 49484     1   0 10:23AM ??         0:00.46 /usr/local/mysql/bin/mysqld --user=_mysql --basedir=/usr/local/mysql --datadir=/usr/local/mysql/data --plugin-dir=/usr/local/mysql/lib/plugin --log-error=/usr/local/mysql/data/mysqld.local.err --pid-file=/usr/local/mysql/data/mysqld.local.pid --port=3307

然后,$ sudo kill -9 49484 终止进程,但它会立即以更高的 PID 重新启动。


正在从 launchdmysqld 中卸载

$ launchctl list | grep mysqlreturns什么都没有,所以$ launchctl unload

也没什么

正在停止 mysql 服务器

$ /usr/local/mysql/support-files/mysql.server stop 失败并显示 "ERROR! MySQL server PID file could not be found!" 尽管 mysql 是 运行 并且 PID 文件在 /usr/local/mysql/data/mysqld 中是最新的。local.pid.


以上是我在 Stack Overflow 上找到的所有建议解决方案,none 其中对我在 El Capitan 上有效。在 Yosemite 上,简单地终止进程就足够了,但随着 El Capitan 更新,mysql 会立即重新启动。

谢谢。

最终对我有用的是通过 Mac 系统偏好设置界面停止 MySQL。那杀死了 mysql 而没有回来。

我发现以下命令对我有用:

停止 mysql:

sudo launchctl unload -F /Library/LaunchDaemons/com.mysql.mysql.plist

开始 mysql:

sudo launchctl load -F /Library/LaunchDaemons/com.mysql.mysql.plist

macOS Sierra,这对我有用

停止MySQL:

launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

开始MySQL:

launchctl load -w ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

在 OS X El Capitan 上,这对我有用:

sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

在我的配置中我发现了这个:

$ cat /Library/LaunchDaemons/com.mysql.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>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
      <string>/usr/local/mysql/bin/mysqld_safe</string>
      <string>--user=mysql</string>
    </array>
  </dict>
</plist>

您需要:将 KeepAlive 之后的 true 标记更改为 false 并按照其他人的建议卸载守护进程。 在我的例子中是: sudo launchctl unload -F /Library/LaunchDaemons/com.mysql.mysql.plist && launchctl load /Library/LaunchDaemons/com.mysql.mysql.plist

一旦守护进程将使用新配置重新启动,当您从首选项中将其杀死时,它不会阻止 mysql 关闭。

根据 Theory 的回答,这对 Mojave 仍然有效。

sudo launchctl unload -F /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist

Per amacrobert,如果您遇到 mysqld 继续启动的问题,这很可能是因为您在系统级别安装了 mysql,默认情况下,它会自动启动在计算机重新启动。

在我的情况下,我在计算机重新启动后感到困惑,为什么我的 docker mysql 容器抱怨已经分配的端口。经过不断的调试,我记得我在系统级别安装了mysql,并没有重新启动我的电脑!

加油。

如果您使用 homebrew 安装 mysql,mysqld 将继续重启,除非您使用以下 brew 命令:

brew services list

获取要停止的服务名称,然后运行执行以下命令:

brew services stop mysql@5.5

这在 Mac Sierra

为我停止了 mysql

sudo launchctl unload -F /Library/LaunchDaemons/homebrew.mxcl.mysql@5.7.plist