Sunday, April 1, 2012

How to install MySQL 5.5 on Mac OS X 10.7 Lion


This may not be obvious, but on the new Macs that ship with Lion, you can use the MySQL 5.5 64-bit dmg installer. It works perfectly on Lion, even though the MySQL site (still, at the time of this writing) says Mac OS X 10.6 Snow Leopard. You can use the Preference Pane to stop and start MySQL.

Now after MySQL 5.5 is running, strangely enough, you cannot simply launch terminal and type
mysql -u root
Bash will complain that it can’t find mysql. So we have to help it like so:

1. Use your favorite text editor to edit the file
/Users/%yourname%/.bash_profile
If this file doesn’t exist you can create it.

2. Add the following line to your .bash_profile
export PATH=$PATH:/usr/local/mysql/bin
and save the file. Be careful editing this file exactly as above. You can render terminal unable to find all your programs if you break your $PATH.

3. Quit and relaunch terminal, or type
source ~/.bash_profle
and hit return to reload the changes in your profile.

4. Check your $PATH by typing
echo $PATH
and pressing return. You should see something like this
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin:/usr/local/mysql/bin
5. Now you should be able to run
mysql -u root
which means there is no root password by default!

6. Run this next, at the mysql prompt
GRANT ALL ON *.* TO 'root'@'localhost' IDENTIFIED BY 'your_password_here' WITH GRANT OPTION;
This is how to secure your root user login.

Now, for PHP to use this connection I had to tweak my system as shown below:

1. Run phpinfo() and check out the path PHP is trying to use for mysql.sock. On my new Mac Mini, it was
/var/mysql/mysql.sock
2. From terminal, I did
sudo find / -name mysql.sock -print
3. The critical line of output shows that MySQL 5.5 installs the sock to
/private/tmp/mysql.sock
4. Now we need to create a symlink for PHP to be able to access the mysql.sock. Trouble is if you try it you’ll get an error because /var/mysql doesn’t exist. So next, do
sudo mkdir /var/mysql
5. Finally, do this
sudo ln -s /private/tmp/mysql.sock /var/mysql/mysql.sock

No comments:

Post a Comment