Wednesday, October 22, 2014

How to auto-load MySQL on startup on OSX 10.10 (Yosemite)

Problem
After upgrading to OSX Yosemite(10.10), MySQL stopped loading on startup.
The MySQL documentation says:
The Startup Item installation adds a variable MYSQLCOM=-YES- to the system configuration file /etc/hostconfig. If you want to disable the automatic startup of MySQL, change this variable to MYSQLCOM=-NO-.

So, I opened that file and it says:
# This file is going away

AFPSERVER=-NO-
AUTHSERVER=-NO-
TIMESYNC=-NO-
QTSSERVER=-NO-
MYSQLCOM=-YES-
As OSX mentioned this file is going away.

Solution
You need to create a Property List file (.plist) to start MySQL automatically on system startup.
First, create a new property list file:
sudo vim /Library/LaunchDaemons/com.mysql.mysql.plist
Add the following lines to it:
<!--?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>
Then update permissions and add it to launchctl:
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
That's it. Now the MySQL service will be started on OS X startup.

No comments:

Post a Comment