Autostart von MySQL Server unter Mac OS X Yosemite / El Capitan

84

Ich möchte den MySQL-Server beim Start automatisch starten. Dies war in Mavericks möglich, scheint aber bei Yosemite nicht zu funktionieren.

edit : scheint das auch mit El Capitan zu funktionieren

Geben Sie hier die Bildbeschreibung ein

Xaver
quelle

Antworten:

143

@dcc war sehr nah. So startet MySQL auf Yosemite erneut automatisch:

Die 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>

Zusätzlich habe ich die Berechtigungen basierend auf dieser Antwort geändert

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

Schließlich führe ich diesen Befehl aus

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

Wenn Sie eine Ergänzung haben, teilen Sie diese bitte unten mit!

Xaver
quelle
1
Sie sollten Ihr Q als beantwortet markieren, damit andere Personen Ihre Lösung finden.
Davidcondrey
26
Ich träume von dem Tag, an dem OSX 10.11 eintreffen wird und ich keine 2 Stunden aufwenden muss, um Apache, PHP und MySQL zu reparieren. Vielleicht ist es Zeit, nach Vagrant zu ziehen ..
dvk3
10
nur zwei Stunden! haha
Xaver
8
Es funktioniert wirklich. Übrigens können die ersten beiden Befehle zu einem kombiniert werden:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite
1
Sehr nützlich, um meine zwei Stunden zu verkürzen, damit diese wieder funktionieren! Danke Leute.
Nigel B. Peck
13

Ich folgte den Anweisungen von @Xavers und versuchte, den Befehl auszuführen

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

wurde der Fehler gegeben:

/Library/LaunchDaemons/com.mysql.mysql.plist: Ungültige Eigenschaftsliste

Nachdem ich mir eine Minute am Kopf gekratzt hatte, stellte ich fest, dass durch das Entfernen der DOCTYPE-DTD-Deklaration oben der Fehler behoben wurde und beim Neustart der mySQL-Server tatsächlich ausgeführt wird.

Mein XML sieht also so aus:

<?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>
Jewgeni Simkin
quelle
9

Wenn Sie MySQL mit Homebrew installiert haben , erhalten Sie Anweisungen zum automatischen Start durch Eingabe von brew info mysql.

Die Ausgabe auf meinem Computer lautet beispielsweise:

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
Kyle Chadha
quelle
2

Erstellen /Library/LaunchDaemons/com.mysql.mysql.plistund speichern Sie es mit der folgenden Liste:

<!--?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>

Laden Sie dann die neu erstellte Plist-Datei

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Davidcondrey
quelle
funktioniert nicht, es heißt immer noch "gestoppt" nach einem Neustart :(
Xaver
apachectl startstartet den Server!? sind sie verwandt?
Xaver
Das sudo launchctl load -w...wirft einen FehlerInvalid property list
Xaver
Ich habe
keine
1
ok, trotzdem danke, ich werde die Lösung posten, wenn ich eine bekommen kann
Xaver
2

Dieser Artikel hilft mir, das Problem mit einem ungültigen Fehler zu beheben. Korrigierte Plist, die ich unten verwendet habe.

Wie man erkennt, welche Zeile der Plist-Datei falsch ist

<?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>
Sharvin
quelle
1

Keine der anderen Antworten funktionierte, um meinen MySQL-Server automatisch zu starten. Ich habe die Anweisungen aus dem MySQL 5.6-Handbuch befolgt und es startet endlich wieder automatisch! Erstellen Sie die Datei /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistmit folgendem Inhalt:

<?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>

Führen Sie nach dem Erstellen der Datei die folgenden Befehle aus:

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

Als ich die in früheren Antworten vorgeschlagene Liste verwendet habe, habe ich den Benutzer für mein System in _mysql geändert, aber die Schaltfläche "MySQL-Server stoppen" im MySQL-Einstellungsbereich funktionierte nicht mehr. Die KeepAliveTaste bewirkt, dass der Prozess sofort nach dem Drücken der Stopp-Taste erneut gestartet wird. Ich habe den Schlüssel verwendet RunAtLoad, damit er beim Neustart gestartet wird, aber die Schaltfläche im Bereich kann weiterarbeiten.

<?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>

Dann lief wie in den anderen Antworten:

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

Jetzt wird MySQL beim Neustart gestartet, aber der MySQL-Bereich in den Systemeinstellungen funktioniert weiterhin. Ich verwende El Capitan, 10.11.2

Franklin F.
quelle