【发布时间】:2026-01-23 16:25:01
【问题描述】:
我正在运行 OS X 10.11 El Capitan 及其内置服务器堆栈(Apache 2.4.16、MySQL 5.6.26)。
我需要退出mysql,但是杀死进程会立即重新启动它。
这是我迄今为止尝试过的:
杀死进程
$ ps aux | grep mysql 获取 PID 返回
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 重新启动。
从 launchd 卸载 mysqld
$ launchctl list | grep mysql 什么也不返回,所以$ launchctl unload 什么也没有
停止 mysql 服务器
$ /usr/local/mysql/support-files/mysql.server stop 失败并显示“错误!找不到 MySQL 服务器 PID 文件!”尽管 mysql 正在运行并且 PID 文件在 /usr/local/mysql/data/mysqld.local.pid 中是最新的。
以上是我在 Stack Overflow 上找到的所有建议解决方案,但在 El Capitan 上没有一个对我有用。在 Yosemite 上,简单地杀死进程就足够了,但是随着 El Capitan 更新,mysql 会立即重新启动。
谢谢。
【问题讨论】:
-
获取 MySQL 的进程 ID 后,找出它的父进程是什么进程:
ps -o ppid= -p 49484其中49484是你的 MySQL 的 PID。结果将是父进程(如果有的话),这样您就可以验证是否有一个进程充当主管(不断重新启动 MySQL)。如果您得到结果,请再次发布更多信息。如果不是,我错了,你有 gremlins :/ -
它的父 PID 为 1 (init)。
-
同样的故事。有人吗?
-
如果你用超级用户直接从命令行启动
mysqld,mysqld的ppid可能是1,你可以用最佳答案停止它。如果你以mysqld_safe开头mysqld,你可以用@Mjh 的评论来停止它。
标签: mysql macos apache osx-elcapitan