Автозапуск MySQL Server в Mac OS X Yosemite / El Capitan


84

Я хотел бы автоматически запускать сервер MySQL при запуске. Это было возможно в Mavericks, но, похоже, не работает в Йосемити.

изменить : похоже, это работает и с El Capitan

введите описание изображения здесь

Ответы:


143

@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

Если у вас есть какие-либо дополнения, поделитесь ими ниже!


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

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

8
Это действительно работает. Кстати, первые две команды можно объединить в одну:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite

1
Очень полезно иметь это, чтобы сократить мои два часа, чтобы они снова работали! Спасибо ребята.
Найджел Б. Пек

1
У меня сработало - спасибо. Кстати, есть вероятность, что если вы читаете это, вы также обнаружите, что ваша копия Apache также не работает при запуске. Если ваш Apache приходит от MacPorts, то исправить это аналогично: sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist. Я обнаружил, что файл .plist все еще не поврежден в каталоге.
xgretsch

13

Я последовал за указаниям @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>

9

Если вы установили 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

2

Создайте /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

не работает, после перезапуска по-прежнему отображается "остановлено" :(
Xaver

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

sudo launchctl load -w...Выдает ошибкуInvalid property list
Ксавьер

у меня нет возможностей, извините
Дэвидондрей

1
хорошо, в любом случае спасибо, я опубликую решение, если смогу его получить
Ксавер

2

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

Как узнать, какая строка файла 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>

1

Ни один из других предоставленных ответов не работал для автоматического запуска моего сервера 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

0

Когда я использовал список, предложенный в предыдущих ответах, я изменил пользователя на _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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.