Выход из MySQL без перезапуска на El Capitan

#mysql

#mysql #macos #apache #osx-elcapitan

Вопрос:

Я использую 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.


Выгрузка mysqld из launchd

$ launchctl list | grep mysql ничего не возвращает, поэтому нечего $ launchctl unload


Остановка сервера mysql

$ /usr/local/mysql/support-files/mysql.server stop сбой с «ОШИБКОЙ! Не удалось найти PID-файл сервера MySQL!» несмотря на то, что mysql запущен и PID-файл обновлен в /usr/local/mysql/data/mysqlld.local.pid.


Все приведенные выше предлагаемые решения, которые я нашел в Stack Overflow, ни одно из которых не работает для меня в El Capitan. В Yosemite было достаточно простого завершения процесса, но с обновлением El Capitan mysql немедленно перезапускается.

Спасибо.

Комментарии:

1. После того, как вы получите идентификатор процесса MySQL, выясните, какой процесс является его родительским: ps -o ppid= -p 49484 где 49484 находится PID вашего MySQL. Результатом будет родительский процесс (если таковой имеется), и таким образом вы сможете проверить, существует ли процесс, который действует как супервизор (который продолжает перезапускать MySQL). Если вы получите ответный результат, пожалуйста, опубликуйте его снова с дополнительной информацией. Если нет, то я ошибся, и у вас есть гремлины :/

2. Его родительский PID равен 1 (инициализация).

3. Здесь та же история. Кто-нибудь?

4. Если вы запустите mysqld непосредственно из командной строки с суперпользователем, ppid mysqld может быть равен 1, вы можете остановить это с помощью top answer. Если вы начнете mysqld с mysqld_safe , вы можете остановить это комментарием @Mjh .

Ответ №1:

Что, наконец, сработало для меня, так это остановка MySQL через интерфейс системных настроек Mac. Это убило mysql без его возврата.

введите описание изображения здесь

Комментарии:

1. Это было единственное, что сработало и у меня. Спасибо.

2. Отличная работа, это было единственное, что сработало и у меня. Каждый раз, когда я уничтожал единственный pid mysql, который мог найти, запускался новый.

Ответ №2:

На macOS Sierra это сработало для меня

Остановить MySQL:

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

Запустить MySQL:

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

Комментарии:

1. В macOS Sierra я использовал этот метод для успешной остановки MySQL, но впоследствии не смог перезапустить его через панель системных настроек MySQL. Я смог перезапустить MySQL только со второй командой в этом ответе.

2. У меня это сработало (НАКОНЕЦ-то!) с небольшой разницей: launchctl unload -w ~/Library/LaunchAgents/homebrew.mxcl.mysql56.plist

Ответ №3:

В OS X El Capitan это сработало для меня:

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

Ответ №4:

Если вы использовали homebrew для установки mysql, mysqld перезапуск продолжится, если вы не используете следующую команду brew:

 brew services list
  

вывод списка служб brew

Получите имя службы для остановки, а затем выполните следующую команду:

 brew services stop mysql@5.5
  

Ответ №5:

Я обнаружил, что следующие команды сработали для меня:

Чтобы остановить mysql:

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

Для запуска mysql:

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

Комментарии:

1. Я запускаю El Capitan и получаю /Library/LaunchDaemons/com.mysql.mysql.plist: No such file or directory

Ответ №6:

В моей конфигурации я нашел это:

 $ 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>
  

Вам нужно: изменить этот тег true после KeepAlive на false и выгрузить демон, как предлагали другие.
В моем случае это было:
sudo launchctl unload -F /Library/LaunchDaemons/com.mysql.mysql.plist amp;amp; launchctl load /Library/LaunchDaemons/com.mysql.mysql.plist

Как только демон будет перезапущен с новой конфигурацией, это не предотвратит завершение работы mysql, когда вы отключите его из настроек.

Ответ №7:

Согласно ответу Theory, это все еще эффективно для Mojave .

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

Согласно amacrobert, если вы столкнулись с проблемой mysqld продолжения запуска, это, скорее всего, связано с тем, что вы mysql установили MySQL на системном уровне, и по умолчанию он автоматически запускается при перезагрузке компьютера.

В моей ситуации я был сбит с толку после перезагрузки компьютера, почему мой docker mysql контейнер жаловался на уже выделенный порт. Я помню, что после непрерывной отладки я установил mysql на системном уровне и никогда не перезапускал свой компьютер!

Приветствую.

Ответ №8:

это остановило mysql для меня на Mac Sierra

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