Як я можу відключити запуск MySQL під час завантаження?


10

У мене середина 2013 MBA під керуванням OSX 10.9.

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

Тож мені цікаво, як я можу відключити це mysqldзапуск при кожному запуску.


Чи можете ви запустити, psщоб відстежити батьківський процес і подивитися, що починається mysqld?
bmike

Давайте подивимось, чи має хтось більш цільову інформацію. Відстеження процесів та вбивство їх із терміналу не найпростіше записати. Ви можете отримати таку саму інформацію у "Моніторі діяльності" - виберіть mysql - потім інформацію, а потім шукайте батьківський процес.
bmike

1
Можлива корисна відповідь від Superuser: superuser.com/a/334622
Mikey TK

Не впевнений, що це може допомогти, оскільки це для програм, запущених на старті, проте ознайомтесь із системними налаштуваннями >> Користувачі та групи >> Елементи входу. Ви знайдете додаток, який запускається при запуску.
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 для першої команди, він зберігається ненадовго у пам'яті сеансу і не потрібен для другої команди (яка привілейована). В іншому випадку просто пропустіть судо в першій команді і використовуйте його в другій. Існує більше способів, як шкіряти кішку.


2
sudo launchctl list | grep -i mysqlне дає результату. Ні sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz

Ви можете використовувати панель адміністратора AMPPS, щоб вимкнути демон AMPPS MySQL. Або ще краще, просто видаліть AMPPS взагалі, оскільки зараз у вас інстальована інша рамка.
user64759

Я видалив AMPPS, і у мене все ще є ця проблема.
Закі Азіз

3

Якщо раніше встановлена ​​версія MySQL походить із сторінки завантажень спільноти MySQL на веб-сайті SUN / Oracle, ймовірно, що launchdвона не пов'язана із запуском mysqldпроцесу. Чомусь сценарій запуску, який розповсюджується за допомогою MySQL, використовує застарілу технологію "Пускові елементи" для запуску процесів при завантаженні. Насправді навіть поточний бінарний розподіл (5.6.15) mysqldвикористовує StartupItems для запуску сервера на OS X (?!)

Сценарій запуску, який запускає конфліктуючу версію MySQL, швидше за все, знаходиться на /Library/StartupItems/MYSQLCOM/MYSQLCOM. Під час завантаження цей елемент запуску вивчить файл у, /etc/hostconfigщоб визначити, чи для параметра "MYSQLCOM" для змінної "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: i.imgur.com/3C2jxPZ.png
Zaki Aziz

І sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopнічого не давати: i.imgur.com/ukHtW5x.png
Zaki Aziz

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. Ви також захочете переглянути системні налаштування у випадку, якщо ви там встановили елемент керування, щоб запустити програмне забезпечення.


mdfind mysqldне показує файлів MySQL, пов’язаних з AMPPS, лише файли, пов’язані з MAMP (і кілька інших програм MySQL, які я встановив, як MySQL Workbench)
Zaki Aziz

1

Почніть з того, щоб дізнатися, який батьківський процес, що запустив ваш mysql. З Терміналу запустіть psкоманду, щоб дізнатися, що таке процес; ви можете використовувати -jабо -lсписувати батьківський ідентифікатор ppid. Отже, це покаже вам:

$ ps -axjc | grep mysql

Перший стовпець - це ваш userid, другий - ідентифікатор процесу, третій - батьківський ідентифікатор.

Якщо батьківський ідентифікатор дорівнює 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" - його могло запускати інша програма або елемент входу (тому просто пошук його по імені може не знайти його) . Виявивши, що це запустило, ви зможете дізнатися, звідки воно походить.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.