Wie kann ich MySQL daran hindern, beim Booten zu starten?

10

Ich habe einen MBA Mitte 2013 mit OSX 10.9.

Der Prozess, der bei jedem Start beginnt, ist mysqld. Ich glaube, es war von einer alten Version von MySQL, die ich installiert hatte (über AMPPS ). Ich habe dann MAMP Pro installiert und habe häufig Konflikte zwischen diesen beiden Prozessen. Jedes Mal, wenn ich meinen Mac herunterfahre und neu starte, muss ich feststellen, dass der Prozess ausgeführt mysqldwird (auf dem Aktivitätsmonitor), ihn beenden und dann MAMP starten (über den Terminalbefehl: /Application/MAMP/bin/startMysql.shfunktioniert nirgendwo anders).

Ich frage mich also, wie ich verhindern kann, dass dies mysqldbei jedem Start ausgeführt wird.

Zaki Aziz
quelle
Können Sie psden übergeordneten Prozess verfolgen und sehen, was gerade beginnt mysqld?
bmike
Mal sehen, ob jemand gezieltere Informationen hat. Das Verfolgen und Beenden von Prozessen vom Terminal aus ist nicht so einfach zu beschreiben. Sie können dieselben Informationen vom Aktivitätsmonitor abrufen - wählen Sie MySQL - dann Informationen und suchen Sie dann nach dem übergeordneten Prozess.
bmike
1
Mögliche hilfreiche Antwort von Superuser: superuser.com/a/334622
Mikey TK
Sie sind sich nicht sicher, ob dies hilfreich sein kann, da es sich um Anwendungen handelt, die beim Start gestartet wurden. Beachten Sie jedoch die Systemeinstellungen >> Benutzer und Gruppen >> Anmeldeelemente. Sie finden die App, die beim Start gestartet wird.
FeliceM
Sind Sie sicher, dass es sich um AMPPS handelt und nicht nur um MAMP, das beim Start ausgeführt wird? Starten Sie den Computer neu und geben Sie 'ps -Awww | ein grep mysql 'im terminal. Dies sollte Ihnen zumindest mitteilen, welche ausführbare Datei ausgeführt wird.
MJ Walsh

Antworten:

10

Öffnen Sie das Terminal und dann:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Wobei "xxx.xxx" in der Ausgabe des ersten Befehls enthalten ist, zum Beispiel "org.macports.mysql". Das Passwort für den Befehl "sudo" ist das Passwort Ihres eigenen Benutzerkontos.

Zwar wird sudo nicht zum "Auflisten" benötigt, aber da Sie bereits ein sudo-Passwort für den ersten Befehl angegeben haben, wird es für kurze Zeit im Sitzungsspeicher gespeichert und für den zweiten Befehl (der privilegiert ist) nicht benötigt. Andernfalls überspringen Sie einfach sudo beim ersten Befehl und verwenden Sie es beim zweiten. Es gibt mehrere Möglichkeiten, eine Katze zu häuten.

user64759
quelle
2
sudo launchctl list | grep -i mysqlergibt kein Ergebnis. Auch sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz
Sie können das AMPPS Admin Panel verwenden, um den AMPPS MySQL-Daemon zu deaktivieren. Oder noch besser, deinstallieren Sie AMPPS einfach vollständig, da Sie jetzt ein anderes Framework installiert haben.
user64759
Ich habe AMPPS deinstalliert und habe immer noch dieses Problem.
Zaki Aziz
3

Wenn die zuvor installierte Version von MySQL von der MySQL Community Downloads-Seite auf der SUN / Oracle-Site stammt, ist dies wahrscheinlich launchdnicht mit dem Start des mysqldProzesses verbunden. Aus irgendeinem Grund verwendet das mit MySQL verteilte Startskript die veraltete Technologie "Startelemente" , um Prozesse beim Booten zu starten. Tatsächlich verwendet sogar die aktuelle Binärdistribution (5.6.15) von mysqldStartupItems, um den Server unter OS X zu starten (?!)

Das Startskript, mit dem die widersprüchliche Version von MySQL gestartet wird, befindet sich höchstwahrscheinlich unter /Library/StartupItems/MYSQLCOM/MYSQLCOM. Beim Start überprüft dieses /etc/hostconfigStartelement die Datei um, um festzustellen, ob die Einstellung für die Variable "MYSQLCOM" auf "-YES-" gesetzt ist. In diesem Fall wird das Startskript gestartet mysqld.

Es sollte möglich sein , den Start von MySQL zu deaktivieren , indem Sie die Zeile in der Modifizierung , /etc/hostconfigdie angibt , MYSQLCOM=-YES-zu sagen MYSQLCOM=-NO-(was den Startvorgang beim nächsten Systemstart deaktivieren soll).

Sie können die aktuell ausgeführte Instanz von beenden, mysqldindem Sie den folgenden Befehl ausführen:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Um den Start des falschen mysqld Prozesses dauerhaft zu deaktivieren , sollte es möglich sein, den Dämon zuerst mit dem obigen Befehl zu stoppen und dann das MySQL-Startelement mit dem folgenden Befehl zu entfernen:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Hinweis: Möglicherweise ist auch das MySQL-Einstellungsfenster unter /Library/PreferencePanes/MySQL.prefpaneoder ~/Library/PreferencePanes/MySQL.prefpane... installiert. Dieses Einstellungsfenster kann auch entfernt werden, um Teile der alten MySQL-Installation zu bereinigen.

Eddie Kelley
quelle
Leider habe ich nichts in meiner / etc / hostconfig-Datei, das mit MySQL in Verbindung steht: i.imgur.com/3C2jxPZ.png
Zaki Aziz
Und sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopgeben Sie auch nichts: i.imgur.com/ukHtW5x.png
Zaki Aziz
3

Folgendes funktionierte für mich mit MySQL, 8.0.12das mit Homebrew installiert wurde macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
Vikram Hosakote
quelle
Es funktionierte für auf Homebrew installierte MySQL. Vielen Dank.
Almas Dusal
1

Es ist möglicherweise einfacher, mysqld umzubenennen (oder es zu verschieben / zu sichern / zu löschen) und dann neu zu starten und nach der Fehlermeldung für das Startelement zu suchen, das versucht hat, das nicht mehr verfügbare Programm zu starten.

Die anderen Antworten scheinen die Suche nach Startagenten und Startdämonen sowie die Verfolgung der PID abzudecken, die für Dämonen im Allgemeinen nicht funktioniert, da sie normalerweise eine übergeordnete PID von 1 haben.

Da MySQL nicht mit Mavericks ausgeliefert wird, sollten Sie in der Lage sein, das ausgewählte Installationspaket zu verfolgen oder mdfind mysqlddas Paket zu finden, das diese Datenbank auf Ihren Mac gebracht hat, und dann die Anweisungen zum Deinstallieren / Deaktivieren für dieses Paket von MySQL zu finden. Sie sollten auch die Systemeinstellungen überprüfen, falls Sie dort ein Steuerelement zum Starten der Software installiert haben.

bmike
quelle
mdfind mysqldzeigt keine AMPPS-bezogenen MySQL-Dateien an, nur MAMP-bezogene Dateien (und einige andere von MySQL-Programmen, die ich wie MySQL Workbench installiert habe)
Zaki Aziz
1

Beginnen Sie damit, herauszufinden, welcher übergeordnete Prozess Ihre MySQL gestartet hat. Führen Sie im Terminal einen psBefehl aus, um herauszufinden, was der Prozess ist. Sie können die übergeordnete ID verwenden -joder -lauflisten ppid. Das zeigt Ihnen also:

$ ps -axjc | grep mysql

Die erste Spalte ist Ihre Benutzer-ID, die zweite ist die Prozess-ID, die dritte ist die übergeordnete ID.

Wenn die übergeordnete ID 1 ist, wurde sie vom Root-Startdämon gestartet, was wahrscheinlich bedeutet, dass sie von einem der LaunchDaemons oder StartupItems stammt. Wenn es sich um einen Prozess handelt, der nicht 1 ist, sondern ein gestarteter Prozess, dann sind dies wahrscheinlich die LaunchAgents oder befinden sich in Ihren Systemanmeldeelementen.

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

Prozess 1 wird also beim Systemstart gestartet, und alles, was den übergeordneten Prozess 1 enthält, stammt von den Systemdämonen. Alles (in diesem Fall) mit einem übergeordneten Prozess von 257 wird von einem der LaunchAgents oder LoginItems gestartet.

Beachten Sie, dass der Name des Startdämons oder des Startelements nicht unbedingt "mysql" im Titel enthält - er könnte von einem anderen Programm oder Anmeldeelement ausgeführt worden sein (wenn Sie ihn also nur nach Namen suchen, wird er möglicherweise nicht gefunden). . Sobald Sie herausgefunden haben, was es gestartet hat, können Sie möglicherweise herausfinden, woher es stammt.

AlBlue
quelle