更改datadir后,PHP无法连接到MySQL

我在我的/etc/my.cnf更改了我的MySQL数据集和套接字位置,如下所示:

 [mysqld] #--default datadir #datadir=/var/lib/mysql #--new datadir datadir=/data/lib/mysql #--default socket #socket=/var/lib/mysql/mysql.sock #--new socket socket=/data/lib/mysql/mysql.sock # Disabling symbolic-links is recommended to prevent assorted security risks symbolic-links=0 # slow log log-slow-queries=/var/log/mysqld-slow.log long-query-time=1 [mysqld_safe] log-error=/var/log/mysqld.log pid-file=/var/run/mysqld/mysqld.pid [client] #--default socket #socket=/var/lib/mysql/mysql.sock #--new socket socket=/data/lib/mysql/mysql.sock 

如上所述写mymyf之后,我用/etc/init.d/mysqld restart启动了mysqld。

我能够通过我的terminal使用mysql -uroot -ppassword连接到我的MySQL,并且我的数据一直存在,所以这里没有问题。

但是当我尝试连接到一个简单的index.php如下MySQL:

 <? $link = mysql_connect('localhost', 'root', 'password', TRUE); echo $link; ?> 

我得到的错误:

 Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2) in /var/ww/html/index.php on line 3 

我无法弄清楚为什么我的PHP试图寻找/var/lib/mysql/mysql.sock ,当我明显改变它/data/lib/mysql/mysql.sock

我正在运行一个正常的Apache v2.2.22加载一个正常的php5_module

我重启我的Apache restartgraceful

有谁知道发生了什么事?

这通常在你的php.iniconfiguration文件中改变。

根据您使用的php mysql扩展,设置有点不同。 如果你不设置这些属性,你的mysql扩展将使用在编译时configuration的默认值,这可能比/var/lib/mysql/mysql.sock

一旦与您使用的扩展相关的属性设置正确,就不需要更改任何PHP代码。

PDO_MYSQL

如果您使用pdo_mysql扩展连接到您的MySQL服务器, pdo_mysql查找的configuration是:

 pdo_mysql.default_socket = /data/lib/mysql/mysql.sock 

MySQL的

如果您使用的是mysql扩展,请configuration以下内容:

 mysql.default_socket = /data/lib/mysql/mysql.sock 

mysqli的

对于mysqli扩展,请看:

 mysqli.default_socket = /data/lib/mysql/mysql.sock 

已经有一段时间,因为我上次搞砸了PHP,但你可以尝试

 mysql_connect('localhost:/data/lib/mysql/mysql.sock', ........) 

编辑:检查出http://php.net/manual/en/function.mysql-connect.php