php未装mysql连接mysql_解决编译安装的PHP无法通过localhost连接mysql的问题

首先搞清楚mysql之连接localhost与127.0.0.1的区别:

127.0.0.1属于TCP/IP连接,是通过网卡传输,依赖网卡,并受到网络防火墙和网卡相关的限制。localhot属于Unix socket方式连接,是不经网卡传输!它不会解析成 IP,不受网络防火墙和网卡相关的的限制,也不会占用网卡、网络资源。一般设置程序时本地服务用localhost是最好的。

我的操作系统php使用127.0.0.1却能连接mysql:

cdb894cccc05aaabdb2a59095457cae0.png

但无法通过localhost连接mysql:

c9d7efe00eeee30d886b0fe60bd67d78.png

尝试phpmyadmin也遇到同样的错误,不过也出现比较有价值的错误提示(套接字没有正确设置):

2ed2ac2b9f668524ea219c4a62f8fe98.png

这里说套接字指的是php跟mysql通信的一个.sock文件。

分析一下问题:

我的mysql使用的是mariadb5.5,通过yum安装,所以问题出在mysql本身的可能性几乎没有。

通过phpinfo查找socket关键字,可以发现mysql.default_socket没有设置默认值,而pdo_mysql给出了默认值,sock的位置

88b3d143857f249d0af41992e2133819.png

9b5c1c69f279b2944b09b618bfea2b7e.png

编辑php.ini给予mysql.default_socket默认路径,并且跟mysql的套接字文件存放路径对应按理就能解决问题。不过还有个偷懒的办法,把mysql的套接字文件在php指定的默认路径创建软连接,就无需修改php.ini了。

查看mysql套接字路径:

# cat /etc/my.cnf

37fd9b910208ee2bb472ef2a4235f0ef.png

创建软连接:

# ln -s /var/lib/mysql/mysql.sock /tmp

0a875f65e9e4acf8c5e65acc884a574c.png

问题解决:

a7eed96a8adae167c2fe5e5a88c82367.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值