zoukankan      html  css  js  c++  java
  • PHP MySQL mysql.sock的问题

    SQLSTATE[HY000] [2002] No such file or directory

    原因是找不到mysql.sock这个文件。。一般出现的症状就是能用ip连接mysql.但不能使用localhost连接本机的mysql

    解决方法:

    find / -name ‘mysql.sock’ 查找一下本机这个文件在哪里

    修改php.ini文件里面:

    mysql.default_socket = /tmp/mysql.sock
    pdo_mysql.default_socket= /tmp/mysql.sock
    mysqli.default_socket =/tmp/mysql.sock
    使用mysqld引擎的数据库应修改为如下设置
    mysql.default_socket = /tmp/mysqld.sock
    pdo_mysql.default_socket= /tmp/mysqld.sock
    mysqli.default_socket =/tmp/mysqld.sock

    如果你不知道自己使用的是mysql.sock还是mysqld.sock文件,或者不知道mysql_socket文件的位置,打开phpinfo() 函数信息页面找到PHP扩展中MYSQL扩展所在位置,找到里面的MYSQL_SOCKET对应的路径值复制出来即可

    再看一下mysql里面这个变量的位置:

    #mysql -u root -p

    mysql>show variables like '%sock%';

    +-----------------------------------------+---------------------------+

    | Variable_name                           | Value                     |

    +-----------------------------------------+---------------------------+

    | performance_schema_max_socket_classes   | 10                        |

    | performance_schema_max_socket_instances | -1                        |

    | socket                                  | /var/mysql/mysql.sock |

    +-----------------------------------------+---------------------------+

    3 rows in set (0.00 sec)

    如果不socket的位置和你实际位置不一样。可以使用ln命令进行链接一下

    例如:ln -s /tmp/mysql.sock /var/mysql/mysql.sock

    修改完成后 重启apache 或者NGINX下重启php-fpm 即可解决问题

    注:实际上Yii2所使用的PDO链接数据库,之修改设定pdo_mysql.default_socket 一项的配置文件路径即可,但考虑到后续使用和其他一些应用场合,就索性连同mysql,mysqli的socket路径一同设置修改了(修改设置路径地址 必须为mysql_socket所在实际文件路径地址,否则将导致PHP无法正常链接使用MYSQL数据库)……

  • 相关阅读:
    代码审计之越权及越权
    代码审计之XSS及修复
    代码审计之SQL注入及修复
    代码审计之CSRF原理及修复
    挖穿各大SRC的短信轰炸
    Kerberoasting攻击
    SPN扫描
    Windows认证 | 域认证
    Windows认证 | 网络认证
    Ceph 纠删码介绍
  • 原文地址:https://www.cnblogs.com/micenote/p/6005137.html
Copyright © 2011-2022 走看看