I am going to have to retract one of my earlier suggestions. It turns out that you do need a MySQL config file to use the non-default socket path in /var/mysql. My hacked up launchd plist file sets the proper path in the MySQL server, but client libraries such as PHP, Perl, and mysql still can't find the server. The client socket path is still in /tmp. So, my new launchd plist file looks like:
<?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>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>
and I have a brand-new /etc/my.cnf file that has only:
[client]
socket=/var/mysql/mysql.sock
[mysqld]
socket=/var/mysql/mysql.sock
Unfortunately, that still wasn't enough. The Perl DBD apparently has the /tmp path hard-coded. I had to add ":mysql_socket=/var/mysql/mysql.sock" to my connection string. Now I have it running with some very funky PHP and Perl code.