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


84

Я хотів би автоматично запустити сервер MySQL під час запуску. Це було можливо в Mavericks, але, схоже, це не працює на Йосеміті.

edit : здається, це працює і з 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
Ви повинні позначити відповідь Q, щоб інші люди знайшли ваше рішення.
davidcondrey

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

10
всього дві години! ха-ха
Ксавер

8
Це справді працює. До речі, перші дві команди можна об'єднати в одну:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite

1
Дуже корисно, щоб це скоротило мої дві години, коли я знову працюю! Дякую, хлопці.
Найджел Б. Пек,

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і збережіть його за допомогою наступного 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запускає сервер !? вони пов’язані?
Ксавер,

sudo launchctl load -w...Видає помилкуInvalid property list
Ксав'єр

у мене немає можливостей, вибачте
davidcondrey

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

Коли я використовував 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.