Автозапуск MySQL сервера на Mac OS X Yosemite/El Capitan
Я хотел бы автоматически запустить сервер MySQL при запуске. Это было возможно в Mavericks, но, похоже, не работает на Yosemite.
edit: кажется, это работает и с El Capitan
7 ответов:
@dcc был очень близок. Вот как MySQL autostarts снова на Yosemite:
The
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
если у вас есть какие-либо дополнения, пожалуйста, поделитесь ниже!
я следовал @revaxarts направления и при попытке выполнить команду
sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist
была выдана ошибка:
/ библиотека / 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
и сохраните его со следующим 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
эта статья поможет мне решить проблему с недопустимая ошибка. Исправленный plist я использовал ниже.
как узнать, какая строка файла 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
когда я использовал 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