Mac OS X Yosemite / El Capitan'da MySQL Sunucusunu Otomatik Başlatma


84

MySQL sunucusunu başlangıçta otomatik olarak başlatmak istiyorum. Bu Mavericks'te mümkündü ancak Yosemite üzerinde çalışmıyor gibi görünüyor.

edit : bu El Capitan ile de çalışıyor gibi görünüyor

görüntü açıklamasını buraya girin

Yanıtlar:


143

@dcc çok yakındı. MySQL, Yosemite'de yeniden otomatik olarak şu şekilde başlar:

com.mysql.mysql.plistiçinde /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>

Ayrıca bu cevaba göre izinleri değiştirdim

sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
sudo chmod 644 /Library/LaunchDaemons/com.mysql.mysql.plist

Sonunda bu komutu çalıştırıyorum

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

Herhangi bir ilaveniz varsa lütfen aşağıda paylaşın!


1
Diğer insanların çözümünüzü bulması için Q'nuzun yanıtlandığını işaretlemelisiniz.
davidcondrey

26
OSX 10.11'in geleceği günü hayal ediyorum ve apache, php ve mysql'yi düzeltmek için 2 saat harcamak zorunda kalmayacağım. Belki de
Vagrant'a

8
Gerçekten çalışıyor. BTW, ilk iki komut tek bir sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
komutta

1
Bunları tekrar çalışır hale getirmek için iki saatimi kısaltmak için buna sahip olmak çok faydalı! Teşekkürler beyler.
Nigel

1
Benim için çalıştı - teşekkürler. Bu arada, muhtemelen bunu okuyorsanız, Apache kopyanızın da başlangıçta çalışmadığını keşfetmiş olacaksınız. Apache MacPorts geliyorsa, bunun için düzeltme benzer: sudo launchctl load -w /Library/LaunchDaemons/org.macports.apache2.plist. .Plist dosyasının dizinde hala sağlam olduğunu buldum.
xgretsch

13

@ Xavers talimatlarını takip ettim ve komutu yerine getirmeye çalışırken

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

hata verildi:

/Library/LaunchDaemons/com.mysql.mysql.plist: Geçersiz özellik listesi

Bir dakikalığına kafamı tırmaladıktan sonra, en üstteki DOCTYPE DTD bildirimini kaldırmanın hatayı ortadan kaldırdığını ve mySQL sunucusunun yeniden başlatıldıktan sonra gerçekten çalıştığını gördüm.

Yani, XML'im şöyle görünüyor:

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

Eğer varsa homebrew ile mysql yüklü , sen yazarak otomatik başlaması ile ilgili yönergeler alabilirsiniz brew info mysql.

Örneğin, makinemdeki çıktı:

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.plistAşağıdaki plist ile oluşturun ve kaydedin:

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

Ardından yeni oluşturulan plist dosyasını yükleyin

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

çalışmıyor, yeniden
Xaver

apachectl startsunucuyu başlatır !? ilişkili mi
Xaver

sudo launchctl load -w...Bir hata atarInvalid property list
Xaver

olasılıklar
tükendi

1
tamam, yine de teşekkür ederim, bir çözüm bulabilirsem çözümü göndereceğim
Xaver

2

Bu makale, geçersiz hatayla ilgili sorunu çözmeme yardımcı oluyor. Aşağıda kullandığım düzeltilmiş plist.

Hangi plist dosyası satırının yanlış olduğunu nasıl anlarım?

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

Sağlanan diğer yanıtların hiçbiri MySQL sunucumu otomatik olarak başlatmak için çalışmadı. MySQL 5.6 el kitabındaki talimatları izledim ve sonunda tekrar otomatik olarak başlıyor! Dosyayı /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistaşağıdaki içeriğe sahip oluşturun :

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

Ve dosyayı oluşturduktan sonra aşağıdaki komutları çalıştırın:

cd /Library/LaunchDaemons
sudo launchctl load -F com.oracle.oss.mysql.mysqld.plist

0

Önceki cevaplarda önerilen plist'i kullandığımda, kullanıcıyı sistemim için _mysql olarak değiştirdim, ancak MySQL tercih bölmesindeki "MySQL Sunucusunu Durdur" düğmesi artık çalışmıyordu. KeepAliveAnahtar Durdurma düğmeye basıldıktan sonra süreç hemen tekrar başlatmak için neden olacaktır. RunAtLoadYeniden başlatmaya başlamak için anahtarı kullandım , ancak bölmedeki düğmenin çalışmaya devam etmesine izin verdim .

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

Sonra diğer cevaplarda olduğu gibi koştu:

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

Şimdi, MySQL yeniden başlatıldığında başlıyor, ancak Sistem Tercihlerindeki MySQL bölmesi hala çalışıyor. El Capitan'ı yönetiyorum, 10.11.2

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.