更改 datadir 后 PHP 无法连接到 MySQL

更改 datadir 后 PHP 无法连接到 MySQL

我已将 MySQL datadir 和套接字位置更改为/etc/my.cnf如下方式:

[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

按照上述方法写入 my.cnf 后,我用 重新启动了 mysqld /etc/init.d/mysqld restart

我能够使用 通过我的终端连接到我的 MySQL mysql -uroot -ppassword,并且我的数据正确存在,因此没有问题。

但是当我尝试通过如下简单的 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

restart我使用和重新启动了我的 Apache graceful

有人知道发生了什么事吗?

答案1

php.ini这通常在您的配置文件中更改。

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

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

pdo_mysql

如果您使用pdo_mysql扩展程序连接到 MySQL 服务器,则要查找的配置是:

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

mysql

如果您正在使用该mysql扩展,请进行以下配置:

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

mysqli

对于mysqli扩展,请查看:

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

答案2

距离我上次使用 php 已经有一段时间了,你可以尝试

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

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

相关内容