Как я могу отключить MySQL от запуска при загрузке?

10

У меня MBA середины 2013 года под управлением OSX 10.9.

Процесс, который начинается при каждом запуске mysqld. Я считаю, что это было из старой версии MySQL, которую я установил (через AMPPS ). Затем я установил MAMP Pro, и у меня часто возникают конфликты между этими двумя процессами. Каждый раз, когда я выключаю и перезагружаю свой Mac, я должен найти процесс, mysqldкоторый работает (на мониторе активности), выйти из него и затем запустить MAMP (с помощью команды терминала: /Application/MAMP/bin/startMysql.shбольше не будет работать).

Поэтому мне интересно, как я могу отключить это mysqldпри каждом запуске.

Заки Азиз
источник
Можете ли вы запустить, psчтобы отслеживать родительский процесс и посмотреть, что запускается mysqld?
bmike
Давайте посмотрим, есть ли у кого-то более целевая информация. Отслеживать процессы и убивать их из терминала не так просто. Вы можете получить ту же информацию из Activity Monitor - выберите mysql - затем info, а затем найдите родительский процесс.
bmike
1
Возможный полезный ответ от Superuser: superuser.com/a/334622
Майки Т.К.
Не уверен, что это может помочь, потому что это для приложений, запускаемых при запуске, однако посмотрите Системные настройки >> Пользователи и группы >> Элементы входа в систему. Вы найдете приложение, которое запускается при запуске.
FeliceM
Вы уверены, что это AMPPS, а не только MAMP, работающий при запуске. Перезагрузите компьютер и введите «ps -Awww | grep mysql 'в терминале. Это должно по крайней мере сказать вам, какой исполняемый файл запущен.
MJ Walsh

Ответы:

10

Откройте терминал, затем:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Где «xxx.xxx» включен в выходные данные первой команды, например «org.macports.mysql». Пароль для команды "sudo" - это пароль вашей учетной записи.

Правда, sudo не требуется для «перечисления», но поскольку вы уже указали пароль sudo для первой команды, он ненадолго сохраняется в памяти сеанса и не требуется для второй команды (которая является привилегированной). В противном случае просто пропустите sudo для первой команды и используйте ее для второй. Есть больше способов, чем один, чтобы снять шкуру с кошки.

user64759
источник
2
sudo launchctl list | grep -i mysqlне дает результата. sudo launchctl list | grep -i mysqld I.imgur.com/WZ5EVjw.png также
Заки Азиз
Вы можете использовать панель администратора AMPPS для отключения демона AMPPS MySQL. Или, что еще лучше, просто полностью удалите AMPPS, поскольку сейчас у вас установлена ​​другая платформа.
user64759 15.12.13
Я удалил AMPPS, и у меня все еще есть эта проблема.
Заки Азиз
3

Если ранее установленная версия MySQL была создана на странице загрузок сообщества MySQL на сайте SUN / Oracle, скорее всего, launchdона не связана с запуском mysqldпроцесса. По какой-то причине сценарий запуска, который распространяется с MySQL, использует устаревшую технологию «Элементы запуска» для запуска процессов при загрузке. Фактически, даже текущий двоичный дистрибутив (5.6.15) mysqldиспользует StartupItems для запуска сервера на OS X (?!)

Сценарий запуска, запускающий конфликтующую версию MySQL, скорее всего, находится по адресу /Library/StartupItems/MYSQLCOM/MYSQLCOM. Во время загрузки этот элемент запуска будет проверять файл в, /etc/hostconfigчтобы определить, установлено ли для переменной «MYSQLCOM» значение «-YES-». Если это так, запускается скрипт запуска mysqld.

Должна быть возможность отключить запуск MySQL, изменив строку, в /etc/hostconfigкоторой указано MYSQLCOM=-YES-слово MYSQLCOM=-NO-(что должно отключить процесс запуска при следующей загрузке).

Вы можете завершить текущий запущенный экземпляр mysqld, выполнив команду:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Чтобы навсегда отключить запуск неправильного mysqld процесса, должна быть возможность сначала остановить демон, используя приведенную выше команду, а затем удалить элемент запуска MySQL, используя следующую команду:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Примечание: у вас также может быть установлена панель настроек MySQL на /Library/PreferencePanes/MySQL.prefpaneили ~/Library/PreferencePanes/MySQL.prefpane... Эта панель настроек также может быть удалена для «очистки» частей старой установки MySQL.

Эдди Келли
источник
К сожалению, в моем файле / etc / hostconfig, который связан с MySQL, нет ничего
Заки Азиз,
И sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopтоже ничего не дают: i.imgur.com/ukHtW5x.png
Заки Азиз
3

Следующее работает для меня с MySQL, 8.0.12установленной с помощью Homebrew в macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Викрам Хосакоте
источник
Он работал для удовлетворения на доморощенной установленной MySQL. Спасибо.
Алмас Дусал
1

Возможно, было бы проще переименовать mysqld (или переместить / создать резервную копию / удалить его), а затем перезапустить и найти сообщение об ошибке для элемента запуска, который пытался запустить программу, которая больше не доступна.

Другие ответы, кажется, охватывают поиск агентов запуска и демонов запуска, а также отслеживание PID, который обычно не работает для демонов, поскольку у них обычно родительский PID равен 1.

Кроме того, поскольку mysql не поставляется с Mavericks, вы должны иметь возможность отслеживать выбранный вами установочный пакет или использовать его, mdfind mysqldчтобы найти пакет, который доставил эту базу данных на ваш Mac, а затем найти инструкции по удалению / отключению для этого пакета mysql. Вы также можете посмотреть системные настройки, если вы установили там элемент управления для запуска программного обеспечения.

bmike
источник
mdfind mysqldне показывает никаких файлов MySQL, связанных с AMPPS, только файлы, связанные с MAMP (и некоторые другие из программ MySQL, которые я установил, например, MySQL Workbench)
Заки Азиз
1

Начните с выяснения родительского процесса, который запустил ваш mysql. Из терминала запустите psкоманду, чтобы узнать, что это за процесс; Вы можете использовать -jили, -lчтобы перечислить родительский идентификатор ppid. Так что это покажет вам:

$ ps -axjc | grep mysql

Первый столбец - ваш идентификатор пользователя, второй - идентификатор процесса, третий - идентификатор родителя.

Если родительский идентификатор равен 1, то он будет запущен корневым демоном запуска, что, вероятно, означает, что он поступает из одного из LaunchDaemons или StartupItems. Если это происходит из процесса, который не равен 1, но это процесс запуска, то это, вероятно, LaunchAgents или находится в элементах входа в систему.

root                1     0     1      0    0 Ss     ??    4:49.10 launchd
alblue            257     1   257      0    0 Ss     ??    0:16.29 launchd
_spotlight        415     1   415      0    0 Ss     ??    0:00.94 launchd

Таким образом, процесс 1 запускается при запуске системы, и все, что имеет родительский процесс 1, происходит от системных демонов. Все (в данном случае) с родительским процессом 257 запускается из одного из LaunchAgents или LoginItems.

Имейте в виду, что имя запускающего демона или элемента запуска не обязательно должно иметь «mysql» в заголовке - оно могло быть запущено другой программой или элементом входа в систему (поэтому простой поиск по имени может его не найти) , Как только вы нашли то, что запустило его, вы можете узнать, откуда оно появилось.

AlBlue
источник