无法停止Mac OSX 10.6上的Mysql 5.1

3
我正在尝试在MacOSX 10.6上停止Mysql v5.1,以便我可以升级到Mysql v5.5。
我相信我几个月前从源代码安装了v5.1。我尝试了此处列出的所有方法:如何停止Mac OS安装中的MySQL?
但是当我执行“mysqladmin shutdown”时,似乎操作系统只会生成另一个mysql进程:
$ sudo mysqladmin shutdown
$ ps -Af | grep mysql
   74 53283     1   0   0:00.01 ??         0:00.01 /bin/sh /usr/local/mysql/bin/mysqld_safe
   74 53324 53283   0   0:00.01 ??         0:00.03 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --log-error=/usr/local/mysql/var/Al.local.err --pid-file=/usr/local/mysql/var/Al.local.pid
  501 53343 52577   0   0:00.00 ttys003    0:00.00 grep mysql

如果我尝试杀死该进程,同样的事情也会发生。(但是如果我尝试杀死mysqld_safe进程,我会得到“没有这样的进程”的提示)
我查看了/Library/StartupItems目录,没有MySQL目录。我知道我没有使用MacPorts安装Mysql。
我在这里缺少什么?我该如何击败这个怪兽?

你的 mysqld_safe 的父进程 ID 是 1,这意味着它是 init。因此,你的 MySQL 是作为系统启动的一部分启动的。我对 OSX 完全不熟悉,但在 startupitems 文件夹的顶部是否有 /etc/init.d 或类似的文件? - Marc B
Justin - 即使是 kill -9 也无法杀死它:$ sudo kill -9 53283 53324 Password: $ ps -Af | grep mysql 74 54610 1 0 0:00.01 ?? 0:00.02 /bin/sh /usr/local/mysql/bin/mysqld_safe 74 54672 54610 0 0:00.08 ?? 0:00.10 /usr/local/mysql/libexec/mysqld --basedir=/usr/local/mysql --datadir=/usr/local/mysql/var --log-error=/usr/local/mysql/var/Al.local.err --pid-file=/usr/local/mysql/var/Al.local.pid 501 54674 52577 0 0:00.00 ttys003 0:00.00 grep mysql - Sly
2
Marc B - 你提供了提示!事实证明有一个文件:/Library/LaunchDaemons/com.mysql.mysqld.plist 阻止mysql关闭。一旦我删除它并重新启动,mysql就消失了。这个stackoverflow帖子有更多细节:https://dev59.com/ClXTa4cB1Zd3GeqP6Otb - Sly
Marc B - 如果您发布答案,我会检查它。感谢您的敏锐眼力! - Sly
3个回答

12

@Sly -- 你的修复方法很有效。但是,如果你不想重新启动,我在man launchctl中发现你还可以通过执行以下命令来停止重启mysql:

sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist

注意:你的com.mysql.mysqld.plist文件可能位于/Library/LaunchDaemons或/Library/LaunchAgents中,也可能位于~/Library/LaunchDaemons或~/Library/LaunchAgents中。


我遇到了类似的问题(尽管没有显示任何进程),但这个方法很有帮助。我认为这可能与重新安装时未卸载有关。 - John Smith
在我的情况下,路径略有不同:/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist。 - Dominik Ehrenberg

2

我有一个没有启动器守护程序的类似安装。我在终端中运行mysqld。我发现唯一关闭它的方法是向mysqld进程发送信号11。


这个非常好用,只需要在终端里键入"kill -11 <process_id>",然后按回车就能帮你解决问题 :) - Sal Prima

1

使用launchctl启动MySQL,如果需要卸载它,则可以借助launchctrl进行操作。

  launchctl interfaces with launchd to load, unload daemons/agents and generally control launchd

尝试卸载应该可以解决问题。
sudo launchctl unload -w /Library/LaunchDaemons/com.mysql.mysqld.plist

如果使用launchctl工具没有加载mysql,则卸载不会停止mysql,在这种情况下,常规的sudo mysqladmin shutdown将起作用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接