Ответ 1
Что в конечном итоге сработало для меня, это остановить MySQL через интерфейс Mac System Preferences. Это убило mysql без его возвращения.
Я запускаю 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.
$ launchctl list | grep mysql
ничего не возвращает, поэтому нет $ launchctl unload
$ /usr/local/mysql/support-files/mysql.server stop
завершается сбой "PIR файл сервера ERROR! MySQL не найден!" несмотря на то, что mysql запущен и PID файл обновлен в /usr/local/mysql/data/mysqld.local.pid.
Выше все предлагаемые решения я нашел в Stack Overflow, ни одна из которых не работает для меня на El Capitan. На Yosemite просто убить процесс было достаточно, но с обновлением El Capitan mysql немедленно перезапускается.
Спасибо.
Что в конечном итоге сработало для меня, это остановить MySQL через интерфейс Mac System Preferences. Это убило mysql без его возвращения.
В 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
Я обнаружил, что для меня работали следующие команды:
Остановить mysql:
sudo launchctl unload -F /Library/LaunchDaemons/com.mysql.mysql.plist
Запустить mysql:
sudo launchctl load -F /Library/LaunchDaemons/com.mysql.mysql.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 на false и выгрузить демон, как предлагали другие. В моем случае это было: sudo launchctl unload -F/Library/LaunchDaemons/com.mysql.mysql.plist && launchctl load/Library/LaunchDaemons/com.mysql.mysql.plist
Как только демон будет перезапущен с новой конфигурацией, он не будет препятствовать завершению работы mysql, когда вы убьете его из настроек.
Если вы использовали homebrew для установки mysql, mysqld
продолжит перезапуск, если вы не используете следующую команду brew:
brew services list
Получите имя службы для остановки и затем выполните следующую команду:
brew services stop [email protected]
Согласно ответу Теории, это все еще эффективно для Mojave
.
sudo launchctl unload -F/Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
По-видимому, если вы сталкиваетесь с проблемой продолжения запуска mysqld
, это, скорее всего, связано с тем, что mysql
установлен на системном уровне и по умолчанию он автоматически запускается при перезагрузке компьютера.
В моей ситуации, я был смущен после перезагрузки компьютера, почему мой docker
mysql
контейнер пожаловалась уже выделенный порт. Помню, что после постоянной отладки я установил mysql
на системный уровень и никогда не перезагружал свой компьютер!
Не унывайте.
это остановило MySQL для меня на Mac Sierra
sudo launchctl unload -F /Library/LaunchDaemons/[email protected]