Я хотел бы автоматически запускать сервер MySQL при запуске. Это было возможно в Mavericks, но, похоже, не работает в Йосемити.
изменить : похоже, это работает и с El Capitan
Ответы:
@dcc был очень близок. Вот как MySQL снова запускается в Йосемити:
com.mysql.mysql.plist
В /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>
Кроме того, я изменил разрешения на основе этого ответа
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist
Наконец я запускаю эту команду
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Если у вас есть какие-либо дополнения, поделитесь ими ниже!
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist
. Я обнаружил, что файл .plist все еще не поврежден в каталоге.
Я последовал за указаниям @Xavers и при попытке выполнить команду
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
была выдана ошибка:
/Library/LaunchDaemons/com.mysql.mysql.plist: недопустимый список свойств
Почесав голову в течение минуты, я обнаружил, что удаление объявления DOCTYPE DTD вверху заставило ошибку исчезнуть, и после перезапуска сервер mySQL действительно работает.
Итак, мой XML выглядит так:
<?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>
Если вы установили mysql с помощью homebrew , вы можете получить инструкции по его автозапуску, набрав brew info mysql
.
Например, вывод на моей машине:
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
Создайте /Library/LaunchDaemons/com.mysql.mysql.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>
Затем загрузите только что созданный файл plist
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
apachectl start
запускает сервер !? они связаны?
sudo launchctl load -w...
Выдает ошибкуInvalid property list
Эта статья поможет мне решить проблему с недопустимой ошибкой. Исправленный список я использовал ниже.
Как узнать, какая строка файла plist неверна
<?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>
Ни один из других предоставленных ответов не работал для автоматического запуска моего сервера MySQL. Я выполнил инструкции из руководства MySQL 5.6, и он, наконец, снова запустился автоматически! Создайте файл /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plist
со следующим содержимым:
<?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>
И после создания файла выполните следующие команды:
cd /Library/LaunchDaemons
sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist
Когда я использовал список, предложенный в предыдущих ответах, я изменил пользователя на _mysql для своей системы, но кнопка «Остановить сервер MySQL» на панели предпочтений MySQL больше не работала. KeepAlive
Ключ заставит процесс немедленно начать снова после того, как кнопка Стоп нажата. Я использовал ключ, RunAtLoad
чтобы заставить его просто запускаться при перезагрузке, но позволить кнопке на панели продолжить работу.
<?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>
Затем, как и в других ответах, побежал:
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
Теперь MySQL запускается при перезапуске, но панель MySQL в системных настройках по-прежнему работает. Я использую El Capitan, 10.11.2