Я хотів би автоматично запустити сервер MySQL під час запуску. Це було можливо в Mavericks, але, схоже, це не працює на Йосеміті.
edit : здається, це працює і з 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
Я дотримувався вказівок @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
і збережіть його за допомогою наступного 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
Коли я використовував 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