Come posso disabilitare MySQL dall'avvio?


10

Ho un MBA di metà 2013 con OSX 10.9.

Il processo che si avvia ad ogni avvio è mysqld. Credo che fosse da una vecchia versione di MySQL che avevo installato (tramite AMPPS ). Ho quindi installato MAMP Pro e ho spesso conflitti tra questi due processi. Ogni volta che spengo e riavvio il mio mac, devo trovare il processo in mysqldesecuzione (sul monitor attività), uscire e quindi avviare MAMP (tramite il comando del terminale: /Application/MAMP/bin/startMysql.shnon funzionerà da nessun'altra parte).

Quindi mi chiedo come posso disabilitare l' mysqldesecuzione da ogni avvio.


Sei in grado di eseguire psper tenere traccia del processo padre e vedere cosa sta iniziando mysqld?
bmike

Vediamo se qualcuno ha informazioni più mirate. Tracciare i processi e ucciderli dal terminale non è il più facile da scrivere. È possibile ottenere le stesse informazioni da Activity Monitor: selezionare mysql, quindi informazioni, quindi cercare il processo padre.
bmike

1
Possibile risposta utile da Superuser: superuser.com/a/334622
Mikey TK

Non sono sicuro se questo può aiutare perché è per le applicazioni avviate all'avvio, tuttavia dai un'occhiata a Preferenze di Sistema >> Utenti e gruppi >> Elementi di accesso. Troverai l'app che viene avviata all'avvio.
FeliceM,

Sei sicuro che sia AMPPS e non solo MAMP in esecuzione all'avvio. Riavvia il computer e inserisci 'ps -Awww | grep mysql 'nel terminale. Questo dovrebbe almeno dirti quale eseguibile è in esecuzione.
MJ Walsh,

Risposte:


10

Aprire il terminale, quindi:

sudo launchctl list | grep -i mysql

launchctl remove xxx.xxx.mysql

Dove "xxx.xxx" è incluso nell'output del primo comando, ad esempio "org.macports.mysql". La password per il comando "sudo" è la password del proprio account utente.

È vero, sudo non è necessario per "elencare" ma poiché hai già fornito una password sudo per il primo comando, viene memorizzato per un breve periodo nella memoria della sessione e non è necessario per il secondo comando (che è privilegiato). Altrimenti, basta saltare sudo sul primo comando e usarlo sul secondo. Esistono più modi per scuoiare un gatto.


2
sudo launchctl list | grep -i mysqlnon dà alcun risultato. Nemmeno sudo launchctl list | grep -i mysqld i.imgur.com/WZ5EVjw.png
Zaki Aziz,

È possibile utilizzare il Pannello di amministrazione AMPPS per disabilitare il demone MySQL AMPPS. O meglio ancora, basta disinstallare del tutto AMPPS poiché ora è installato un altro framework.
user64759

Ho disinstallato AMPPS e ho ancora questo problema.
Zaki Aziz,

3

Se la versione di MySQL precedentemente installata ha avuto origine dalla pagina Download della community MySQL sul sito SUN / Oracle, è probabile che launchdnon sia coinvolto con l'avvio del mysqldprocesso. Per qualche motivo, lo script di avvio distribuito con MySQL utilizza la tecnologia obsoleta "Elementi di avvio" per avviare i processi all'avvio. In effetti, anche l'attuale distribuzione binaria (5.6.15) mysqldutilizza StartupItems per avviare il server su OS X (?!)

Lo script di avvio che avvia la versione in conflitto di MySQL si trova probabilmente su /Library/StartupItems/MYSQLCOM/MYSQLCOM. Al momento dell'avvio, l'elemento di avvio esaminerà il file in /etc/hostconfigper determinare se l'impostazione per la variabile "MYSQLCOM" è impostata su "-YES-". In tal caso, verrà avviato lo script di avvio mysqld.

Dovrebbe essere possibile disabilitare l'avvio di MySQL modificando la riga /etc/hostconfigche specifica MYSQLCOM=-YES-per dire MYSQLCOM=-NO-(che dovrebbe disabilitare il processo di avvio al prossimo avvio).

È possibile terminare l'istanza attualmente in esecuzione di mysqldeseguendo il comando:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Per disabilitare in modo permanente l'avvio del processo errato mysqld , dovrebbe essere possibile prima arrestare il demone usando il comando sopra, quindi rimuovere l'elemento di avvio MySQL usando il comando seguente:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Nota: è possibile che sia installato anche il riquadro delle preferenze di MySQL in /Library/PreferencePanes/MySQL.prefpaneo ~/Library/PreferencePanes/MySQL.prefpane... Il riquadro delle preferenze può anche essere rimosso per "ripulire" parti della vecchia installazione di MySQL.


Sfortunatamente non ho nulla nel mio file / etc / hostconfig associato a MySQL: i.imgur.com/3C2jxPZ.png
Zaki Aziz

E sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stopnon cedere nulla: i.imgur.com/ukHtW5x.png
Zaki Aziz

3

Quanto segue ha funzionato per me con mysql 8.0.12installato usando Homebrew in macOS Mojave 10.14.1:

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

Ha funzionato per incontrato su mysql installato homebrew. Grazie.
Almas Dusal,

1

Potrebbe essere più facile rinominare mysqld (o spostarlo / eseguirne il backup / eliminarlo), quindi riavviare e cercare il messaggio di errore per l'elemento di avvio che stava tentando di avviare il programma che non è più disponibile.

Le altre risposte sembrano coprire la questione della ricerca di agenti di lancio e demoni di lancio, oltre a tracciare il PID che generalmente non funziona per i demoni poiché di solito hanno un PID genitore di 1.

Inoltre, poiché mysql non viene fornito con Mavericks, dovresti essere in grado di tracciare il pacchetto di installazione selezionato o utilizzare mdfind mysqldper individuare il pacchetto che ha portato quel database sul tuo Mac e quindi individuare le istruzioni di disinstallazione / disabilitazione per quel pacchetto di mysql. Dovrai anche cercare le preferenze di sistema nel caso in cui tu abbia installato un controllo per avviare il software.


mdfind mysqldnon mostra alcun file MySQL relativo ad AMPPS, ma solo file relativi a MAMP (e alcuni altri dei programmi MySQL che ho installato come MySQL Workbench)
Zaki Aziz

1

Inizia scoprendo qual è il processo genitore che ha avviato il tuo mysql. Dal Terminale eseguire un pscomando per scoprire qual è il processo; puoi usare -jo -lper elencare l'id genitore ppid. Quindi questo ti mostrerà:

$ ps -axjc | grep mysql

La prima colonna è il tuo ID utente, la seconda è l'id del processo, la terza è l'id principale.

Se l'id genitore è 1, sarà stato avviato dal demone di avvio principale, il che probabilmente significa che proviene da uno dei LaunchDaemons o StartupItems. Se proviene da un processo che non è 1 ma che è un processo di avvio, probabilmente è LaunchAgents o è presente negli elementi di accesso al sistema.

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

Quindi il processo 1 viene avviato dall'avvio del sistema e qualsiasi cosa con il processo padre di 1 proviene dai demoni del sistema. Qualunque cosa (in questo caso) con un processo padre di 257 viene lanciata da uno dei LaunchAgents o LoginItems.

Ricorda che il nome del demone di lancio o dell'oggetto di avvio non ha necessariamente "mysql" nel titolo: potrebbe essere stato eseguito da un programma o elemento di accesso diverso (quindi semplicemente cercandolo per nome potrebbe non trovarlo) . Una volta trovato ciò che l'ha lanciato, potresti essere in grado di scoprire da dove proviene.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.