เริ่มต้นเซิร์ฟเวอร์ MySQL โดยอัตโนมัติบน Mac OS X Yosemite / El Capitan


84

ฉันต้องการเริ่มเซิร์ฟเวอร์ MySQL โดยอัตโนมัติเมื่อเริ่มต้น สิ่งนี้เป็นไปได้ใน Mavericks แต่ดูเหมือนว่าจะไม่ได้ผลกับ Yosemite

แก้ไข : ดูเหมือนว่าจะใช้ได้กับ El Capitan เช่นกัน

ใส่คำอธิบายภาพที่นี่

คำตอบ:


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>

นอกจากนี้ฉันได้เปลี่ยนการอนุญาตตามคำตอบนี้

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 อาจถึงเวลาย้ายไป Vagrant ..
dvk3

8
มันใช้งานได้จริง BTW สองคำสั่งแรกสามารถรวมกันเป็นหนึ่ง:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite

1
มีประโยชน์มากที่มีสิ่งนี้เพื่อลดเวลาสองชั่วโมงในการทำงานเหล่านี้อีกครั้ง! ขอบคุณเพื่อน.
Nigel B. Peck

1
ทำงานให้ฉัน - ขอบคุณ อย่างไรก็ตามโอกาสที่หากคุณกำลังอ่านสิ่งนี้คุณจะพบว่าสำเนา 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และบันทึกด้วย 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
ซาเวียร์

ฉันไม่มีทางเป็นไปได้ขอโทษ
davidcondrey

1
ตกลงขอบคุณต่อไปฉันจะโพสต์วิธีแก้ปัญหาถ้าฉันสามารถหาได้
Xaver

2

บทความนี้ช่วยฉันแก้ไขปัญหาเกี่ยวกับข้อผิดพลาดที่ไม่ถูกต้อง แก้ไข plist ที่ฉันใช้ด้านล่าง

จะทราบได้อย่างไรว่าไฟล์ 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ที่สำคัญจะทำให้เกิดกระบวนการที่จะเปิดตัวอีกครั้งทันทีหลังจากที่กดปุ่ม Stop ฉันใช้คีย์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 ใน System Preferences ยังคงใช้งานได้ ฉันใช้ El Capitan, 10.11.2

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.