登录
首页 >  数据库 >  MySQL

无法为 php_mysqli 指定 mysqli.default_socket 参数

来源:SegmentFault

时间:2023-02-16 15:28:34 293浏览 收藏

有志者,事竟成!如果你在学习数据库,那么本文《无法为 php_mysqli 指定 mysqli.default_socket 参数》,就很适合你!文章讲解的知识点主要包括MySQL、配置、PHP,若是你对本文感兴趣,或者是想搞懂其中某个知识点,就请你继续往下看吧~

mysqli_connect(): (HY000/2002): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (2)

先给出结论

此bug尚未找出解决方案,但我已使用了曲线救国的方案来救命


背景

  • 用了阿里云市场中提供的镜像;

  • localhost
    host
    的话,php连接mysql时就会走
    socket
    的方式而非
    TCP/IP
    的方式。
  • 镜像中提供的可视化运维系统(PHP),似乎指定了mysql socket的路径为:

    /tmp/mysql.sock
    ;因此,若我改
    mysql
    的配置
    socket
    的话,则该可视化运维系统不可用;
  • 该可视化运维系统使用了

    zend
    的工具进行加密,无法修改;

调试过程

因此只能改自己

PHP
的配置
mysqli.default_socket

备注:经测试,用
php_mysql
扩展的话,
mysql.default_socket
修改成功,并能成功连接。

而修改

mysqli.default_socket
的话,依然报上述的错,也就是设置无效。
利用
php_info
查看了一下mysqli的配置,结果如下:

MYSQLI_SOCKET    /tmp/mysql.sock
mysqli.default_socket    no value

这里可以看出俩问题:

  • 似乎设置好了

    MYSQLI_SOCKET
    ,但为何未能设置成功
    mysqli.default_socket
  • google了一下,别人都是说

    MYSQLI_SOCKET
    会覆盖
    mysqli.default_socket
    ,因此需要处理
    MYSQLI_SOCKET
    不正确的问题;那在我这,为何
    MYSQLI_SOCKET
    没有覆盖
    mysqli.default_socket

最终结果

搞不定此socket的配置,只好换回用

127.0.0.1
来走
TCP/IP

备注:用
127.0.0.1
的话,记得在mysql的配置文件
my.cnf
中把
skip-name-resolve
给注释掉,否则会报以下这错:

Host '127.0.0.1' is not allowed to connect to this MySQL server

以上就是本文的全部内容了,是否有顺利帮助你解决问题?若是能给你带来学习上的帮助,请大家多多支持golang学习网!更多关于数据库的相关知识,也可关注golang学习网公众号。

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>