我在我的/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 restart
和graceful
。
有谁知道发生了什么事?
这通常在你的php.ini
configuration文件中改变。
根据您使用的php mysql扩展,设置有点不同。 如果你不设置这些属性,你的mysql扩展将使用在编译时configuration的默认值,这可能比/var/lib/mysql/mysql.sock
一旦与您使用的扩展相关的属性设置正确,就不需要更改任何PHP代码。
如果您使用pdo_mysql
扩展连接到您的MySQL服务器, pdo_mysql
查找的configuration是:
pdo_mysql.default_socket = /data/lib/mysql/mysql.sock
如果您使用的是mysql
扩展,请configuration以下内容:
mysql.default_socket = /data/lib/mysql/mysql.sock
对于mysqli
扩展,请看:
mysqli.default_socket = /data/lib/mysql/mysql.sock
已经有一段时间,因为我上次搞砸了PHP,但你可以尝试
mysql_connect('localhost:/data/lib/mysql/mysql.sock', ........)