php连接mysql数据库Can't connect to local MySQL server through socket /var/lib/mysql/mysql.sock

27 篇文章 0 订阅
6 篇文章 0 订阅

在部署一个阿里云web环境 ,先是安装了阿里云提供的NMP环境。导致了程序的一些php脚本无法正常运行。于是有用yum安装了一个php。但是在运行脚本时。会报 Can't connect to local MySQL server through socket /var/lib/mysql/mysql.sock,原有的nmp中的mysql的sock 是位于/tmp/mysql.sock.而yum安装php所调用的mysql.sock 默认是位于//var/lib/mysql/mysql.sock.而实际上并不存在这个,而每次/etc/init.d/mysql restart .所产生的sock也只是产生在/tmp文件下,于是采取了以下措施:

   1修改/etc/my.cnf

         port = 3306
          #socket = /tmp/mysql.sock
         #socket = /var/lib/mysql/mysql.sock
         mysqld]
         port = 3306
        #socket = /tmp/mysql.sock
        socket = /var/lib/mysql/mysql.sock

但是还是没能在/var/lib/mysql产生mysql.sock 检查发现是/var/lib/mysql的属主是root.root于是改成mysql.mysql

重启msyql。运行脚本,脚本成功运行,表明php成功通过sock连接mysql。

但是很惨的是脚本可以运行了。但是web服务器却报了无法通过Can't connect to local MySQL server through socket /tmp/mysql.sock

赶紧把配置改回socket=/tmp/mysql.sock,果然,网站正常了,脚本又不能运行了。

然后看到了这篇文章:http://www.netingcn.com/mac-os-lion-php-mysql-localhost.html

原来是通过yum安装的php和nmp脚本安装的php的配置文件中关于msyql.sock的默认配置是不同的。

默认的php配置文件中mysql.default_socket、mysqli.default_socket、pdo_mysql.default_socket这三项值修改为“/tmp/mysql.sock,(ps:我的centos中的php是没有pdo_mysql.default_socket这个配置项的;修改好后再次运行脚本。脚本成功运行,网站也成功运行。


说明了,在一台服务器上通过不同的方式安装php,默认配置是不同的。有一些配置项是默认值为空,但是不同的php中的实际值是不同的,需要明确修改配置:如mysql.default_socket = 改为 mysql.default_socket = ”tmp/mysql.sock“

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值