2014-10-20 5 views

ответ

143

@dcc был очень близок. Это как MySQL снова автозапуск на Yosemite:

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> 

Кроме того, я изменил разрешение, основанное на this answer

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 

Если у вас есть ny добавление, пожалуйста, поделитесь ниже!

+1

Вы должны отметить свой ответ Q, чтобы другие люди нашли ваше решение. – davidcondrey

+26

Я мечтаю о том, когда придет OSX 10.11, и мне не придется тратить 2 часа на исправление apache, php и mysql. Может быть, пришло время переехать в Бродягу. – dvk3

+10

всего два часа! haha – Xaver

2

Создать /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 
+0

не работает, он все еще говорит «остановлен» после перезагрузки :( – Xaver

+0

просто опубликовал второй возможный метод, если вы хотите его попробовать .. – davidcondrey

+0

'apachectl start' запускает сервер !? Связаны ли они? – Xaver

2

Эта статья поможет мне решить проблему с неправильной ошибкой. Исправленный слой, который я использовал ниже.

How to know which line of plist file is incorrect

<?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> 
13

Я последовал @revaxarts directions и при попытке выполнить команду

sudo launchctl load -w /Library/LaunchDaemons/com.mysql.mysql.plist 

получил ошибку:

/Library/LaunchDaemons/com.mysql.mysql.plist: Invalid property list

После чесать голову на минуту я нашел что удаление декларации DTD DOCTYPE вверху сделало t он уходит, и после перезагрузки 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> 
0

Когда я использовал 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

7

Если вы установили MySQL с доморощенного, вы можете получить инструкции о том, как автозапуск его, набрав 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 
1

Ни один из других предоставленных ответов работал для автоматического запуска моего сервера MySQL. Я следовал инструкциям от the MySQL 5.6 handbook, и он, наконец, автоматически запускается! Создайте файл /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 
Смежные вопросы