php通过localhost访问mysql.sock
我们经常编译mysql会指定prefix,把生成的bin,lib这些目录到指定位置,或又指定数据目录等。
那我们就需要在my.cnf修改相关选项,如basedir,datadir等,若要使php等外部程序在本地通过localhost访问mysql,则需再指定mysql.sock存放的位置,使用–sock启动选项来指定。注意,如果用127.0.0.1连,则不关心是否有mysql.sock,因为127.0.0.1已经不再使用本地socket方式了,而是通过tcp/ip方式。但效率上来说,肯定是localhost更好了。我们通常在php中出现ERROR 2002: Can’t connect to local MySQL server through socket ‘/tmp/mysql.sock’ (2),也就是无外两个原因,要么mysql未启动,要么mysql.sock没有或没在/tmp/中,如果mysql.sock在另外路径,也可以在mysql_connect时指定$dbhost = ‘localhost:/some/path/mysql.sock’;
以下是我启动mysql的选项,将其放入rc.local,使其随系统自动启动
mysqld_safe –user=mysql –datadir=/data/server/mysql-5.1/var –basedir=/data/server/mysql-5.1 –socket=/tmp/mysql.sock &