One thing I noticed setting up PHP and MySQL on Leopard, is that the default PHP build looks for the MySQL socket in /var/mysql/mysql.sock
which doesn’t exist and isn’t the location that MySQL would use if it did (by default anyway). By default the MySQL socket is: /tmp/mysql.sock
.
There are four ways to fix this:
- Create the /var/mysql directory (
sudo mkdir /var/mysql
) and then create a symbolic link from/tmp/mysql.sock
to/var/mysql/mysql.sock
(with:sudo ln -s /tmp/mysql.sock /var/mysql/mysql.sock
). - Edit the
/etc/php.ini
file (it may not exist in which case justsudo cp /etc/php.ini.default /etc/php.ini
) so that themysql.default_socket = /tmp/mysql.sock
(by default line 760) andmysqli.default_socket = /tmp/mysql.sock
(by default line 795). - Edit
/etc/my.cnf
adding the following lines:[mysqld]
socket=/var/mysql/mysql.sock
[client]
socket=/var/mysql/mysql.sock
This will tell MySQL to create its socket where Leopard’s default PHP is looking for it. Next, you also need to create the /var/mysql directory andsudo chown mysql /var/mysql
it or MySQL won’t start since it wont be able to create the socket. - Recompile php for your version of MySQL (a PIA, but not a terrible idea at all).
Of these #1 is easiest, but a bit of a hack. #2 is the easiest real way. #3 isn’t to bad, but could cause issues with other MySQL clients that look for the socket in /tmp/mysql.sock
. #4 is ultimately the best fix, but is clearly neither very fast nor particularly easy