解决Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

post by rocdk890 / 2012-9-7 16:32 Friday linux技术
根据我上一篇文章centos编译安装nginx+php-fpm+mysql,在启动了mysql之后,php无法连接到mysql,并且会报Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)这个错误,直到今天我才找到解决方法.
   系统:centos 5.5
1.使用php文件来测试php是否连接上了mysql
vi tt.php
<?php
$link=mysql_connect("localhost","root","passwd");
if(!$link) echo "bad!" ;
else echo "ok!" ;
mysql_close();
?>
在使用这个php文件的时候,最好是打开php错误页面,打开方法:
vi /etc/php.ini
display_errors = Off 改成display_errors = On
保存退出后重启nginx和php-fpm.

当访问http://ip或域名/tt.php的时候,可以看到页面有php的报错信息.
点击查看原图
再使用phpinfo来看mysql的sock地址是指向哪里的,如图
点击查看原图
可以看到这里php认为mysql sock的地址是/tmp下,但我编译的时候是让mysql sock的路径在/var/lib/mysql下的,如果你是懒人的话可以使用下面的命令来解决
ln -s /var/lib/mysql/mysql.sock /tmp/mysql.sock
重启下mysql,然后再使用tt.php来检查php和mysql是否连接上了.

2.如果你不想使用软链接来解决的话,跟我一样是个有特殊要求的人,那可以使用下面的方法来解决:
在/etc/php.ini里找到mysql.default_socket这项
vi /etc/php.ini
mysql.default_socket =
修改为
mysql.default_socket = /var/lib/mysql/mysql.sock
保存退出后,再检查/etc/my.cnf
确认下
[client]
socket          = /var/lib/mysql/mysql.sock
[mysqld]
socket          = /var/lib/mysql/mysql.sock
重启下mysql和php-fpm.

3.验证
再访问http://ip或域名/tt.php看是否为ok,如果还有报错请检查上面的步骤.
夜空- 本站版权
1、本站所有主题由该文章作者发表,该文章作者与夜空享有文章相关版权
2、其他单位或个人使用、转载或引用本文时必须同时征得该文章作者和夜空的同意
3、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、原文链接:blog.slogra.com/post-252.html

标签: mysql php 错误 mysql.sock 位置 phpinfo

  1. 2019-07-14 14:43
    Thanks for finally talking about >解决Can't connect to local MySQL server through
    socket '/tmp/mysql.sock' (2) - 夜空 <Liked it!

评论: