【问题标题】:Quit MySQL without it restarting on El Capitan退出 MySQL 而不在 El Capitan 上重新启动
【发布时间】: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


【解决方案1】:

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

【讨论】:

  • 这也是唯一对我有用的东西。谢谢。
  • 干得好,这也是唯一对我有用的东西。每次我杀死我能找到的唯一 mysql pid 时,都会启动一个新的。
【解决方案2】:

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

brew services list

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

brew services stop mysql@5.5

【讨论】:

    【解决方案3】:

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

    $ 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 &amp;&amp; launchctl load /Library/LaunchDaemons/com.mysql.mysql.plist

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

    【讨论】:

      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

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

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

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

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

        欢呼。

        【讨论】:

          【解决方案6】:

          macOS Sierra,这对我有用

          停止 MySQL:

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

          启动 MySQL:

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

          【讨论】:

          • 在 macOS Sierra 上,我使用此方法成功停止 MySQL,但随后无法通过 MySQL System Preferences 窗格重新启动它。我只能用这个答案中的第二个命令重新启动 MySQL。
          • 这对我有用(终于!)只有一点点区别:launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist
          【解决方案7】:

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

          停止mysql:

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

          启动mysql:

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

          【讨论】:

          • 我正在运行 El Capitan,我收到了 /Library/LaunchDaemons/com.mysql.mysql.plist: No such file or directory
          【解决方案8】:

          这在 Mac Sierra 上为我停止了 mysql

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

          【讨论】:

            最近更新 更多