Avvia automaticamente MySQL Server su Mac OS X Yosemite / El Capitan


84

Vorrei avviare automaticamente il server MySQL all'avvio. Questo era possibile in Mavericks ma sembra non funzionare su Yosemite.

modifica : sembra che funzioni anche con El Capitan

inserisci qui la descrizione dell'immagine

Risposte:


143

@dcc era molto vicino. Ecco come MySQL si riavvia automaticamente su Yosemite:

Il com.mysql.mysql.plistin /Library/LaunchDaemons:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
    <string>/usr/local/mysql/bin/mysqld_safe</string>
    <string>--user=mysql</string>
    </array>
  </dict>
</plist>

Inoltre ho modificato le autorizzazioni in base a questa risposta

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist

Finalmente eseguo questo comando

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

Se hai qualche aggiunta, condividi qui sotto!


1
Dovresti contrassegnare la tua Q come risposta in modo che altre persone trovino la tua soluzione.
davidcondrey

26
Sogno il giorno in cui arriverà OSX 10.11 e non dovrò spendere 2 ore per riparare apache, php e mysql. Forse è ora di passare a Vagrant ..
dvk3

8
Funziona veramente. A proposito, i primi due comandi possono essere combinati in uno:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite

1
Molto utile avere questo per ridurre le mie due ore per farle funzionare di nuovo! Grazie ragazzi.
Nigel B. Peck

1
Ha funzionato per me - grazie. A proposito, è probabile che se stai leggendo questo, avrai anche scoperto che la tua copia di Apache non funziona nemmeno all'avvio. Se il vostro Apache viene da MacPorts, la correzione per questo è simile: sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist. Ho scoperto che il file .plist era ancora intatto nella directory.
xgretsch

13

Ho seguito le indicazioni di @Xavers e dopo aver tentato di eseguire il comando

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

è stato dato l'errore:

/Library/LaunchDaemons/com.mysql.mysql.plist: elenco di proprietà non valido

Dopo aver grattato la testa per un minuto ho scoperto che la rimozione della dichiarazione DOCTYPE DTD in alto ha fatto scomparire l'errore e al riavvio il server mySQL è, infatti, in esecuzione.

Quindi, il mio XML ha questo aspetto:

<?xml version="1.0" encoding="UTF-8"?>
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
    <string>/usr/local/mysql/bin/mysqld_safe</string>
    <string>--user=mysql</string>
    </array>
  </dict>
</plist>

9

Se hai installato mysql con homebrew , puoi ottenere istruzioni su come avviarlo automaticamente digitando brew info mysql.

Ad esempio, l'output sulla mia macchina è:

To have launchd start mysql at login:
  ln -sfv /usr/local/opt/mysql/*.plist ~/Library/LaunchAgents
Then to load mysql now:
  launchctl load ~/Library/LaunchAgents/homebrew.mxcl.mysql.plist

2

Crealo /Library/LaunchDaemons/com.mysql.mysql.pliste salvalo con il seguente plist:

<!--?xml version="1.0" encoding="UTF-8"?-->

<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <true>
            <key>Label</key>
            <string>com.mysql.mysqld</string>
            <key>ProgramArguments</key>
            <array>
                <string>/usr/local/mysql/bin/mysqld_safe</string>
                <string>--user=mysql</string>
            </array>
        </true>
    </dict>
</plist>

Quindi carica il file plist appena creato

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

non funziona, viene ancora visualizzato il messaggio "interrotto" dopo un riavvio :(
Xaver

apachectl startavvia il server !? sono imparentati?
Xaver

Il sudo launchctl load -w...lancia un erroreInvalid property list
Xaver

Non ho possibilità, mi dispiace
davidcondrey

1
ok, grazie comunque, posterò la soluzione se riesco a ottenerne una
Xaver

2

Questo articolo mi aiuta a risolvere il problema con un errore non valido. Plist corretto che ho usato di seguito.

Come sapere quale riga del file plist non è corretta

<?xml version="1.0" encoding="UTF-8"?> 
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-   1.0.dtd"> 
<plist version="1.0"> 
<dict> 
<key>KeepAlive</key> 
<true/> 
<key>Label</key> 
<string>com.mysql.mysqld</string> 
<key>ProgramArguments</key> 
<array> 
<string>/usr/local/mysql/bin/mysqld_safe</string> 
<string>--user=mysql</string> 
</array> 
</dict> 
</plist>

1

Nessuna delle altre risposte fornite ha funzionato per avviare automaticamente il mio server MySQL. Ho seguito le istruzioni del manuale MySQL 5.6 e finalmente si riavvia automaticamente! Crea il file /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistcon il seguente contenuto:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" 
  "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>             <string>com.oracle.oss.mysql.mysqld</string>
    <key>ProcessType</key>       <string>Interactive</string>
    <key>Disabled</key>          <false/>
    <key>RunAtLoad</key>         <true/>
    <key>KeepAlive</key>         <true/>
    <key>SessionCreate</key>     <true/>
    <key>LaunchOnlyOnce</key>    <false/>
    <key>UserName</key>          <string>_mysql</string>
    <key>GroupName</key>         <string>_mysql</string>
    <key>ExitTimeOut</key>       <integer>600</integer>
    <key>Program</key>           <string>/usr/local/mysql/bin/mysqld</string>
    <key>ProgramArguments</key>
        <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/mysqld.local.err</string>
            <string>--pid-file=/usr/local/mysql/data/mysqld.local.pid</string>
            <string>--port=3306</string>
        </array>
    <key>WorkingDirectory</key>  <string>/usr/local/mysql</string>
</dict>
</plist>

Ed esegui i seguenti comandi dopo aver creato il file:

cd /Library/LaunchDaemons
sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist

0

Quando ho utilizzato il plist suggerito nelle risposte precedenti, ho cambiato l'utente in _mysql per il mio sistema, ma il pulsante "Stop MySQL Server" nel pannello delle preferenze di MySQL non funzionava più. Il KeepAlivetasto farà ripartire il processo immediatamente dopo aver premuto il pulsante Stop. Ho usato la chiave RunAtLoadper farlo partire al riavvio, ma consenti al pulsante nel riquadro di continuare a funzionare.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>RunAtLoad</key>
    <true/>
    <key>Label</key>
    <string>com.mysql.mysqld</string>
    <key>ProgramArguments</key>
    <array>
    <string>/usr/local/mysql/bin/mysqld_safe</string>
    <string>--user=_mysql</string>
    </array>
  </dict>
</plist>

Quindi, come nelle altre risposte, ha eseguito:

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist

Ora MySQL si avvia al riavvio, ma il pannello MySQL in Preferenze di Sistema funziona ancora. Corro El Capitan, 10.11.2

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.