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
Câu trả lời:
@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.plist
trong /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é!
sudo chown root:wheel /Library/LaunchDaemons/com.mysql.mysql.plist
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>
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
Tạo /Library/LaunchDaemons/com.mysql.mysql.plist
và 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
apachectl start
khởi động máy chủ !? chúng có liên quan với nhau không?
sudo launchctl load -w...
ném một lỗiInvalid property list
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>
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.plist
vớ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
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 KeepAlive
chí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