วิธีรันคำสั่ง sudo บน mac? .. ปัญหากับเซิร์ฟเวอร์ mysql


0

ฉันติดตั้งเซิร์ฟเวอร์ mysql ด้วยการชงและฉันต้องเรียกใช้คำสั่งนี้ด้วยตนเองทุกครั้งที่คอมพิวเตอร์เริ่มทำงานกับแอปพลิเคชันที่ฉันไม่สามารถแก้ไขได้

sudo mkdir -p -- /var/run/mysqld/ ; sudo ln -s /tmp/mysql.sock /var/run/mysqld/mysqld.sock

ฉันจะทำอย่างไรเพื่อเรียกสิ่งนี้โดยอัตโนมัติ ฉันพยายามด้วย Automator แต่ฉันไม่ต้องการป้อนรหัสผ่านของฉันในแต่ละครั้งวิธีที่ถูกต้องในการเรียกใช้หรือแก้ไขปัญหานี้คืออะไร (อาจเปลี่ยนการอนุญาตและเรียกใช้สิ่งนี้ในฐานะผู้ใช้ปกติ)

Mysql ทำงานกับผู้ใช้ปกติของฉันไม่ใช่รูท


คุณลองและ AppleScript แล้วหรือยัง
Bretonics

คำตอบ:


1

ใน OS X Yosemite คุณควรเพิ่มสคริปต์ใน:

/Library/LaunchDaemons

ใช้ชื่อนี้สำหรับสคริปต์:

com.mysql.mysql.plist

และเนื้อหานี้:

<!--?xml version="1.0" encoding="UTF-8"?-->
<plist version="1.0">
  <dict>
    <key>KeepAlive</key>
    <dict>
       <key>SuccessfulExit</key>
       <false/>
    </dict>
    <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>

คุณจะได้รับ MySQL เริ่มต้นโดยอัตโนมัติทุกครั้งที่คุณรีบูท Mac

ต้องแน่ใจว่าตั้งค่าสิทธิ์ที่เหมาะสมกับสคริปต์:

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

เพิ่งทดสอบบน OS X 10.10.2 ในขณะที่ย้ายออกจาก MAMP PRO และใช้งานได้ง่าย :-)


0

คุณสามารถสร้างLaunch Agentและวางไว้ใน/Library/LaunchAgentsไดเรกทอรี rootนี้จะช่วยให้รหัสของคุณจะทำงานเป็น นี่คือแอปเปิ้ลเอกสารเกี่ยวกับตัวแทนการเปิดตัว คุณจะต้องสร้างไฟล์ 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>Label</key>
    <string>com.mysql.script</string>
    <key>ProgramArguments</key>
    <array>
        <string>/bin/sh</string>
        <string>-c</string>
        <string>/path/to/your/script.sh</string>
    </array>
    <key>LimitLoadToSessionType</key>
    <string>Aqua</string>
    <key>RunAtLoad</key>
    <true/>
</dict>
</plist>

บันทึกและchownมันเป็นราก สคริปต์ของคุณควรเป็นของ root และสามารถทำงานได้เช่นกัน ด้วยสิ่งนี้สคริปต์ของคุณจะทำงานตลอดเวลาหลังจากลงชื่อเข้าใช้

หมายเหตุ: เปลี่ยนพา ธ ไปยังสคริปต์ของคุณในไฟล์ plist นี้


เป็นไปได้ที่จะวางไว้ในโฟลเดอร์ผู้ใช้? ~ / Library / LaunchAgents
Arnold Roa

@ArnoldRoa เอเจนต์ launchd ต่อผู้ใช้ถูกเรียกใช้ในฐานะผู้ใช้ไม่ใช่ root (UID) ข้อมูลเพิ่มเติมเกี่ยวกับ
UID
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.