解决MySQL无法通过mysql.sock连接的问题,主要提示是无法通过'/tmp/mysql.sock '连接服务器,php的标准配置只是使用'/tmp/mysql.sock '
但是有些mysql的安装方式是把mysql.sock放在/var/lib/mysql.sock或者其他地方。可以通过修改/etc/my.cnf文件来修改,打开文件可以看到以下内容:
[mysqld]
socket=/var/lib/mysql.sock
改了是好的,但是也会造成其他问题,比如mysql程序连不上。再补充一点:
[mysql]
socket=/tmp/mysql.sock
或者可以修改php.ini中的配置,使php与其他mysql.sock连接,我们自己去了解一下。
或者这样:
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
并且:
Phpmyadmin的说明说
The error message 'Warning: MySQL Connection Failed: Can't connect to local Mysql server through socket '/tmp/mysql.sock' (111).' is displayed. What can I do?
For RedHat users, Harald Legner suggests this on the mailing list:
On my RedHat-Box the socket of mysql is /var/lib/mysql/mysql.sock. In your php.ini you will find a line
mysql.default_socket=/tmp/mysql.sock
change it to
mysql.default_socket=/var/lib/mysql/mysql.sock
Then restart apache and it will work.
Here is a fix suggested by Brad Ummer in the phpwizard forum:
First, you need to determine what socket is being used by MySQL.
To do this, telnet to your server and go to the MySQL bin directory. In this directory there should be a file named mysqladmin. Type ./mysqladmin variables, and this should give you a bunch of info about your MySQL server, including the socket (/tmp/mysql.sock, for example).
Then, you need to tell PHP to use this socket.
Assuming you are using PHP 3.0.10 or better, you can specify the socket to use when you open the connection. To do this in phpMyAdmin, you need to complete the socket information in the config.inc.php
3.
For example: $cfg['Servers'][$i]['socket']='/tmp/mysql.sock'; (T113)