Jak mogę wyłączyć MySQL przed uruchomieniem?

10

Mam MBA z połowy 2013 roku z systemem OSX 10.9.

Proces rozpoczyna się przy każdym uruchomieniu mysqld. Wierzę, że pochodzi ze starej wersji MySQL, którą zainstalowałem (przez AMPPS ). Następnie zainstalowałem MAMP Pro i często mam konflikty między tymi dwoma procesami. Za każdym razem, gdy zamykam i ponownie uruchamiam komputer Mac, muszę znaleźć proces, mysqldktóry jest uruchomiony (na monitorze aktywności), zamknąć go, a następnie uruchomić MAMP (za pomocą polecenia terminalu: /Application/MAMP/bin/startMysql.shnie będzie działać z innego miejsca).

Zastanawiam się więc, jak mogę wyłączyć to mysqlduruchamianie przy każdym uruchomieniu.

Zaki Aziz
źródło
Czy jesteś w stanie uruchomić, psaby śledzić proces nadrzędny i zobaczyć, co się zaczyna mysqld?
bmike
Zobaczmy, czy ktoś ma bardziej ukierunkowane informacje. Śledzenie procesów i ich zabijanie z terminala nie jest najłatwiejsze do napisania. Możesz uzyskać te same informacje z Monitora aktywności - wybierz mysql - następnie informacje, a następnie poszukaj procesu nadrzędnego.
bmike
1
Możliwa pomocna odpowiedź od Superuser: superuser.com/a/334622
Mikey TK,
Nie jestem pewien, czy to może pomóc, ponieważ dotyczy aplikacji uruchamianych przy starcie, jednak zajrzyj do Preferencji systemowych >> Użytkownicy i grupy >> Elementy logowania. Znajdziesz aplikację, która jest uruchamiana podczas uruchamiania.
FeliceM,
Czy na pewno jest to AMPPS, a nie tylko MAMP działający przy starcie. Uruchom ponownie komputer i wpisz „ps -Awww | grep mysql 'w terminalu. Powinno to przynajmniej powiedzieć, który plik wykonywalny jest uruchomiony.
MJ Walsh,

Odpowiedzi:

10

Otwórz terminal, a następnie:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Gdzie „xxx.xxx” znajduje się w danych wyjściowych pierwszego polecenia, na przykład „org.macports.mysql”. Hasło do polecenia „sudo” to hasło do konta użytkownika.

To prawda, że ​​sudo nie jest potrzebne do „listy”, ale ponieważ już dałeś hasło sudo dla pierwszego polecenia, jest ono przechowywane przez krótki czas w pamięci sesji i nie jest wymagane dla drugiego polecenia (które jest uprzywilejowane). W przeciwnym razie po prostu pomiń sudo w pierwszym poleceniu i użyj go w drugim. Jest więcej sposobów na skórowanie kota.

użytkownik64759
źródło
2
sudo launchctl list | grep -i mysqlnie daje rezultatu. Ani nie sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz
Możesz użyć panelu administracyjnego AMPPS, aby wyłączyć demona AMPPS MySQL. Lub jeszcze lepiej, po prostu całkowicie odinstaluj AMPPS, ponieważ masz teraz zainstalowaną inną platformę.
user64759,
Odinstalowałem AMPPS i nadal mam ten problem.
Zaki Aziz,
3

Jeśli poprzednio zainstalowana wersja MySQL pochodzi ze strony pobierania społeczności MySQL w witrynie SUN / Oracle, prawdopodobnie launchdnie jest związana z uruchomieniem tego mysqldprocesu. Z jakiegoś powodu skrypt startowy dystrybuowany wraz z MySQL używa przestarzałej technologii „Elementy startowe” do uruchamiania procesów podczas rozruchu. W rzeczywistości nawet bieżąca dystrybucja binarna (5.6.15) mysqldużywa StartupItems do uruchomienia serwera w systemie OS X (?!)

Skrypt startowy, który uruchamia sprzeczną wersję MySQL, najprawdopodobniej znajduje się w /Library/StartupItems/MYSQLCOM/MYSQLCOM. W czasie uruchamiania ten element startowy zbada plik at, /etc/hostconfigaby ustalić, czy ustawienie zmiennej „MYSQLCOM” jest ustawione na „-TAK-”. Jeśli tak, uruchomi się skrypt startowy mysqld.

Powinno być możliwe wyłączenie uruchamiania MySQL poprzez modyfikację wiersza, /etc/hostconfigktóry określa, MYSQLCOM=-YES-co powiedzieć MYSQLCOM=-NO-(co powinno wyłączyć proces uruchamiania przy następnym uruchomieniu).

Możesz zakończyć aktualnie działającą instancję mysqld, wykonując polecenie:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Aby trwale wyłączyć uruchamianie niewłaściwego mysqld procesu, powinno być możliwe zatrzymanie demona za pomocą powyższego polecenia, a następnie usunięcie elementu startowego MySQL za pomocą następującego polecenia:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Uwaga: możesz również mieć okienko preferencji MySQL zainstalowane w /Library/PreferencePanes/MySQL.prefpanelub ~/Library/PreferencePanes/MySQL.prefpane... Okienko preferencji można również usunąć w celu wyczyszczenia fragmentów starej instalacji MySQL.

Eddie Kelley
źródło
Niestety nie mam nic w moim pliku / etc / hostconfig, który kojarzy się z MySQL: i.imgur.com/3C2jxPZ.png
Zaki Aziz
I sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopnic nie dają: i.imgur.com/ukHtW5x.png
Zaki Aziz
3

Poniższe działało dla mnie z mysql 8.0.12zainstalowanym za pomocą Homebrew w macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Vikram Hosakote
źródło
Działa dla spełnione na mysql zainstalowany homebrew. dzięki.
Almas Dusal
1

Może być łatwiej zmienić nazwę mysqld (lub przenieść / wykonać kopię zapasową / usunąć), a następnie uruchomić ponownie i poszukać komunikatu o błędzie dla elementu uruchamiania, który próbował uruchomić program, który nie jest już dostępny.

Inne odpowiedzi wydają się obejmować podejście do szukania agentów uruchamiania i uruchamiania demonów, a także śledzenia PID, który na ogół nie działa dla demonów, ponieważ zwykle mają one macierzysty PID równy 1.

Ponadto, ponieważ mysql nie jest dostarczany z Mavericks, powinieneś być w stanie śledzić wybrany pakiet instalacyjny lub użyć go mdfind mysqlddo zlokalizowania pakietu, który przyniósł tę bazę danych na komputer Mac, a następnie zlokalizować instrukcje odinstalowywania / wyłączania dla tego pakietu mysql. Będziesz także chciał sprawdzić preferencje systemowe, jeśli zainstalowałeś tam kontrolkę, aby uruchomić oprogramowanie.

bmike
źródło
mdfind mysqldnie pokazuje żadnych plików MySQL związanych z AMPPS, tylko pliki związane z MAMP (i kilka innych z programów MySQL, które zainstalowałem jak MySQL Workbench)
Zaki Aziz
1

Zacznij od dowiedzenia się, jaki jest proces nadrzędny, który uruchomił twój mysql. Z terminalu uruchom pspolecenie, aby dowiedzieć się, na czym polega proces; możesz użyć -jlub, -laby wyświetlić identyfikator nadrzędny ppid. To pokaże ci:

$ ps -axjc | grep mysql

Pierwsza kolumna to identyfikator użytkownika, druga to identyfikator procesu, trzecia to identyfikator nadrzędny.

Jeśli nadrzędny identyfikator ma wartość 1, zostanie uruchomiony przez głównego demona uruchamiającego, co prawdopodobnie oznacza, że ​​pochodzi on z jednego z elementów LaunchDaemons lub StartupItems. Jeśli pochodzi z procesu, który nie jest 1, ale jest to proces uruchomiony, to prawdopodobnie jest to LaunchAgents lub jest w systemie elementy logowania.

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

Tak więc proces 1 jest uruchamiany przy starcie systemu i wszystko, co ma proces macierzysty 1, pochodzi z demonów systemowych. Wszystko (w tym przypadku) z nadrzędnym procesem 257 jest uruchamiane z jednego z LaunchAgents lub LoginItems.

Pamiętaj, że nazwa demona uruchamiającego lub elementu startowego niekoniecznie zawiera w tytule słowo „mysql” - mogło być uruchomione przez inny program lub element logowania (więc po prostu wyszukiwanie go według nazwy może go nie znaleźć) . Po znalezieniu tego, co go uruchomiło, możesz być w stanie dowiedzieć się, skąd on się wziął.

AlBlue
źródło