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
Antworten:
@dcc war sehr nah. So startet MySQL auf Yosemite erneut automatisch:
Die com.mysql.mysql.plist
in /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!
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
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>
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
Erstellen /Library/LaunchDaemons/com.mysql.mysql.plist
und 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
apachectl start
startet den Server!? sind sie verwandt?
sudo launchctl load -w...
wirft einen FehlerInvalid property list
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>
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.plist
mit 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
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 KeepAlive
Taste 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