L'avvio e l'arresto del server MySQL tramite il pannello delle preferenze / launchd e d'altra parte tramite sudo /usr/local/mysql/support-files/mysql.server start/stop
non sono realmente compatibili.
Dopo aver scelto "Launchd Support" nel programma di installazione di MySQL, verrà creato il daemon di avvio com.oracle.oss.mysql.mysqld e il riquadro delle preferenze di MySQL utilizza il meccanismo launchd per avviare e arrestare mysql. Se abiliti "Avvia automaticamente MySQL Server all'avvio", mysqld viene abilitato automaticamente dopo l'avvio del Mac.
Il nome del file pid creato dal demone di lancio non è compatibile con quello creato e previsto dallo script mysql-server.
Il nome del file pid del daemon di avvio creato durante l'esecuzione è mysql.local.pid , lo script si aspetta un nome basato sul nome host del tuo Mac, sul nome locale o sul computer.
Quindi usa il pref di MySQL / launchctl o lo script per avviare e arrestare mysqld.
In una certa misura puoi rendere entrambi i metodi compatibili modificando il file com.oracle.oss.mysql.mysqld :
Dopo aver smesso di mysql, sostituisci l'array
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/mysql.local.err</string>
<string>--pid-file=/usr/local/mysql/data/mysql.local.pid</string>
</array>
da
<array>
<string>/usr/local/mysql/bin/mysqld</string>
<string>--user=_mysql</string>
<string>--basedir=/usr/local/mysql</string>
<string>--datadir=/usr/local/mysql/data</string>
<string>--plugin-dir=/usr/local/mysql/lib/plugin</string>
<string>--log-error=/usr/local/mysql/data/$name.err</string>
<string>--pid-file=/usr/local/mysql/data/$name.pid</string>
</array>
con $ nome: HostName (ad es. host.example.com), LocalHostName (ad es. host.local) o ComputerName (ad es. host). Probabilmente il migliore è usare un nome host. Puoi ottenere un nome host con nome host con scutil --get HostName
o impostarlo con sudo scutil --set HostName your_hostname
.
Puoi anche ottenere il nome del pid dello script mysql-server effettivamente utilizzato - dopo aver arrestato il daemon di avvio e avviato mysqld con mysql-server start
- controllando la directory dei dati di mysql con sudo ls /usr/local/mysql/data
. Usa il nome trovato lì per regolare il nome del plid del plist.
Potrebbe essere necessario convertire il file del daemon di avvio in xml per modificarlo. L'app TextWrangler la apre immediatamente come file xml.
Ricarica il plist con launchctl in seguito.
Ora dovrebbe essere in grado di avviare e arrestare il pannello delle preferenze MySQL e lo script mysql.server.
Se hai abilitato "Avvia automaticamente MySQL Server all'avvio", non puoi fermare il server - anche dopo aver modificato il plist - con lo script perché launchd sovrascrive qualsiasi stop comando dopo pochi secondi e lancia nuovamente mysqld.