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