Come posso disabilitare MySQL dall'inizio al boot?

8

Ho un MBA a metà 2013 con OSX 10.9.

Il processo che inizia 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 chiudo e riavvia il mio Mac, devo trovare il processo di mysqld che è in esecuzione (sul monitor dell'attività), chiudilo e poi avviare MAMP (tramite il comando terminale: /Application/MAMP/bin/startMysql.sh non funzionerà da nessuna parte altro).

Quindi mi chiedo come posso disabilitare questo mysqld dall'esecuzione su ogni avvio.

    
posta Xecure 12.12.2013 - 22:09
fonte

5 risposte

8

Apri 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 tuo account utente.

Vero, sudo non è necessario per "elencare" ma poiché hai già dato una password sudo per il primo comando, esso viene memorizzato per un breve periodo nella memoria di sessione e non è richiesto per il secondo comando (che è privilegiato ). Altrimenti, basta saltare sudo sul primo comando e usarlo sul secondo. Ci sono più modi di uno per spellare un gatto.

    
risposta data 13.12.2013 - 12:40
fonte
2

Se la versione di MySQL precedentemente installata proveniva dalla pagina di download della Community MySQL sul sito SUN / Oracle, è probabile che launchd non sia coinvolto con l'avvio del processo mysqld . Per qualche ragione, lo script di avvio distribuito con MySQL utilizza il deprecato " Elementi di avvio " tecnologia per avviare i processi all'avvio. Infatti, anche la distribuzione binaria corrente (5.6.15) di mysqld utilizza StartupItems per avviare il server su OS X (?!)

Lo script di avvio che sta lanciando la versione in conflitto di MySQL è probabilmente localizzato a /Library/StartupItems/MYSQLCOM/MYSQLCOM . Al momento dell'avvio, quell'elemento di avvio esaminerà il file in /etc/hostconfig per determinare se l'impostazione per la variabile "MYSQLCOM" è impostata su "-YES-". In tal caso, lo script di avvio avvierà mysqld .

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

Puoi terminare l'istanza attualmente in esecuzione di mysqld eseguendo il comando:

sudo /Library/StartupItems/MYSQLCOM/MYSQLCOM stop

Per disabilitare permanentemente l'avvio del processo sbagliato mysqld , dovrebbe essere possibile prima arrestare il daemon usando il comando precedente, e quindi rimuovere l'elemento di avvio MySQL usando il seguente comando:

sudo rm -rf /Library/StartupItems/MYSQLCOM

Nota: potresti anche avere il riquadro delle preferenze MySQL installato a /Library/PreferencePanes/MySQL.prefpane o ~/Library/PreferencePanes/MySQL.prefpane ... Quel riquadro delle preferenze può anche essere rimosso per "ripulire" i pezzi della vecchia installazione di MySQL.

    
risposta data 02.01.2014 - 17:29
fonte
1

Potrebbe essere più facile rinominare mysqld (o spostarlo / eseguirne il backup / cancellarlo) e 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 mera ricerca di Launch Agents e Launch Daemon e tracciare il PID che generalmente non funziona per i demoni poiché di solito hanno un PID padre di 1.

Inoltre, dal momento che mysql non viene fornito con Mavericks, dovresti essere in grado di tracciare il pacchetto di installazione selezionato o utilizzare mdfind mysqld per 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 tu abbia installato un controllo lì per avviare il software.

    
risposta data 02.01.2014 - 08:22
fonte
1

Inizia scoprendo quale sia il processo genitore che ha avviato il tuo mysql. Dal Terminale esegui un comando ps per scoprire qual è il processo; puoi utilizzare -j o -l per elencare l'id principale ppid . Quindi questo ti mostrerà:

$ ps -axjc | grep mysql

La prima colonna è il tuo id utente, il secondo è id processo, il terzo è l'id genitore.

Se l'id genitore è 1, sarà lanciato dal daemon di avvio root, il che probabilmente significa che proviene da uno dei LaunchDaemons o StartupItems. Se proviene da un processo che non è 1 ma si tratta di un processo di avvio, questo è probabilmente il LaunchAgent o è negli elementi di accesso del 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 principale di 1 proviene dai daemon del sistema. Qualsiasi cosa (in questo caso) con un processo padre di 257 viene avviata da uno dei LaunchAgent o LoginItems.

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

    
risposta data 04.01.2014 - 16:01
fonte
0

I seguenti hanno funzionato per me con mysql 8.0.12 installato usando Homebrew in macOS Mojave 10.14.1 :

rm -rf ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist
    
risposta data 03.12.2018 - 00:52
fonte

Leggi altre domande sui tag