Tự động khởi động MySQL Server trên Mac OS X Yosemite / El Capitan


84

Tôi muốn tự động khởi động máy chủ MySQL khi khởi động. Điều này có thể xảy ra ở Mavericks nhưng dường như không hoạt động trên Yosemite.

chỉnh sửa : có vẻ như điều này cũng hoạt động với El Capitan

nhập mô tả hình ảnh ở đây

Câu trả lời:


143

@dcc đã ở rất gần. Đây là cách MySQL tự động khởi động lại trên Yosemite:

Các com.mysql.mysql.plisttrong /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>

Ngoài ra, tôi đã thay đổi các quyền dựa trên câu trả lời này

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

Cuối cùng tôi chạy lệnh này

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

Nếu bạn có bổ sung gì hãy chia sẻ bên dưới nhé!


1
Bạn nên đánh dấu câu trả lời Q của bạn để người khác tìm ra giải pháp của bạn.
davidcondrey

26
Tôi mơ về một ngày OSX 10.11 sẽ đến và tôi sẽ không phải mất 2 giờ để sửa lỗi apache, php và mysql. Có lẽ đã đến lúc chuyển đến Vagrant ..
dvk3.

10
chỉ hai giờ! haha
Xaver

8
Nó thật sự có hiệu quả. BTW, hai lệnh đầu tiên có thể được kết hợp thành một:sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
Rockallite

1
Rất hữu ích khi có cái này để cắt giảm hai giờ của tôi để chúng hoạt động trở lại! Cảm ơn các bạn.
Nigel B. Peck

13

Tôi đã làm theo hướng dẫn của @Xavers và khi cố gắng thực hiện lệnh

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

đã được đưa ra lỗi:

/Library/LaunchDaemons/com.mysql.mysql.plist: Danh sách thuộc tính không hợp lệ

Sau khi gãi đầu trong một phút, tôi thấy rằng việc xóa khai báo DOCTYPE DTD ở trên cùng đã làm cho lỗi biến mất và khi khởi động lại máy chủ mySQL, thực sự là đang chạy.

Vì vậy, XML của tôi trông như thế này:

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

Nếu bạn đã cài đặt mysql bằng homebrew , bạn có thể nhận được hướng dẫn về cách tự khởi động lại nó bằng cách nhập brew info mysql.

Ví dụ: đầu ra trên máy của tôi là:

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

Tạo /Library/LaunchDaemons/com.mysql.mysql.plistvà lưu nó bằng plist sau:

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

Sau đó tải tệp plist mới tạo

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

không làm việc, nó vẫn nói "dừng lại" sau khi khởi động lại :(
Xaver

apachectl startkhởi động máy chủ !? chúng có liên quan với nhau không?
Xaver

Các sudo launchctl load -w...ném một lỗiInvalid property list
Xaver

Tôi ra khỏi khả năng, xin lỗi
davidcondrey

1
ok, cảm ơn bạn dù sao, tôi sẽ đăng các giải pháp nếu tôi có thể có được một
Xaver

2

Bài viết này giúp tôi giải quyết vấn đề với lỗi không hợp lệ. Đã sửa lỗi plist tôi đã sử dụng bên dưới.

Làm thế nào để biết dòng nào của tệp plist không chính xác

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

Không có câu trả lời nào khác được cung cấp hoạt động để tự động khởi động máy chủ MySQL của tôi. Tôi đã làm theo hướng dẫn từ sổ tay MySQL 5.6 và cuối cùng nó cũng tự động khởi động lại! Tạo tệp /Library/LaunchDaemons/com.oracle.oss.mysql.mysqld.plistvới nội dung sau:

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

Và chạy các lệnh sau sau khi tạo tệp:

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

0

Khi tôi sử dụng plist được đề xuất trong các câu trả lời trước đó, tôi đã thay đổi người dùng thành _mysql cho hệ thống của mình, nhưng nút "Stop MySQL Server" trong ngăn tùy chọn MySQL không còn hoạt động. Các KeepAlivechính sẽ gây ra quá trình để khởi động lại ngay sau khi nút Stop được nhấn. Tôi đã sử dụng chìa khóa RunAtLoadđể làm cho nó chỉ bắt đầu khi khởi động lại, nhưng cho phép nút trong ngăn tiếp tục hoạt động.

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

Sau đó, như trong các câu trả lời khác, chạy:

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

Bây giờ, MySQL khởi chạy khi khởi động lại, nhưng ngăn MySQL trong Tùy chọn hệ thống vẫn hoạt động. Tôi đang chạy El Capitan, 10.11.2

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.