Chciałbym automatycznie uruchamiać serwer MySQL przy starcie. Było to możliwe w Mavericks, ale wydaje się, że nie działa w Yosemite.
edycja : wydaje się, że to działa również z El Capitan
Odpowiedzi:
@dcc był bardzo blisko. Oto jak MySQL ponownie uruchamia się automatycznie w Yosemite:
com.mysql.mysql.plist
W /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>
Dodatkowo zmieniłem uprawnienia w oparciu o tę odpowiedź
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist
Wreszcie uruchamiam to polecenie
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Jeśli masz jakiś dodatek, udostępnij go poniżej!
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Postępowałem zgodnie ze wskazówkami @Xavers i próbując wykonać polecenie
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
otrzymał błąd:
/Library/LaunchDaemons/com.mysql.mysql.plist: Nieprawidłowa lista właściwości
Po chwili drapania się po głowie stwierdziłem, że usunięcie deklaracji DOCTYPE DTD u góry spowodowało, że błąd zniknął i po ponownym uruchomieniu serwer mySQL rzeczywiście działa.
Tak więc mój XML wygląda następująco:
<?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>
Jeśli zainstalowałeś mysql z homebrew , możesz uzyskać instrukcje, jak go automatycznie uruchomić, wpisując brew info mysql
.
Na przykład wynik na moim komputerze to:
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
Utwórz /Library/LaunchDaemons/com.mysql.mysql.plist
i zapisz go za pomocą następującego pliku 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>
Następnie załaduj nowo utworzony plik plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
apachectl start
uruchamia serwer !? czy są spokrewnieni?
sudo launchctl load -w...
Zgłasza błądInvalid property list
Ten artykuł pomoże mi rozwiązać problem z nieprawidłowym błędem. Poprawiona lista, której użyłem poniżej.
Jak sprawdzić, która linia pliku plist jest nieprawidłowa
<?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>
Żadna z pozostałych odpowiedzi nie pomogła w automatycznym uruchomieniu mojego serwera MySQL. Postępowałem zgodnie z instrukcjami zawartymi w podręczniku MySQL 5.6 i w końcu ponownie uruchamia się automatycznie! Utwórz plik /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
z następującą zawartością:
<?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>
I uruchom następujące polecenia po utworzeniu pliku:
cd /Library/LaunchDaemons
sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
Kiedy użyłem plist sugerowanego we wcześniejszych odpowiedziach, zmieniłem użytkownika na _mysql dla mojego systemu, ale przycisk „Zatrzymaj serwer MySQL” w panelu preferencji MySQL już nie działał. KeepAlive
Klawisz spowoduje, że proces ponownie uruchomić natychmiast po naciśnięciu przycisku STOP. Użyłem klawisza, RunAtLoad
aby uruchomić go po ponownym uruchomieniu, ale pozwoliłem, aby przycisk w okienku kontynuował pracę.
<?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>
Następnie, podobnie jak w innych odpowiedziach, uruchomiono:
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Teraz MySQL uruchamia się po ponownym uruchomieniu, ale panel MySQL w Preferencjach systemowych nadal działa. Prowadzę El Capitan, 10.11.2