zoukankan      html  css  js  c++  java
  • [PHP]关于连接MySQL的问题

    概述

    PHP中无论使用MySQL函数抑或PDO连接MySQL服务器,都允许有两种方式,一是通过TCP网络层,一是通过unix socket

    PHP并没有给出指明用何种方式去连接数据库,决定使用何种方式去连接数据库的是,连接时host的指定:

    1、当host为一个ip值时,PHP使用TCP网络层方式去连接数据库;

    2、当host的值为localhost时,PHP使用unix socket的方式连接数据库;

    问题

    当使用unix socket的方式连接数据库时,你必须确保本地的MySQL服务启用了unix socket这个连接方式;

    一般来说MySQL服务会在/var/lib/mysql目录下建立一个mysql.sock,以确保PHP通过打开此文件连接MySQL服务;

    试图打开和读取mysql.sock的程序必须具备对mysql.sock的rw权限;

    并且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

    假如没有正确配置php.ini的mysql[d].sock路径,连接数据库时,PHP的MySQL函数会抛出以下错误:

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

    在MySQL查看unix socket状态

    可以通过以下命令查看unix socket状态:

    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

     

  • 相关阅读:
    2018-5-30 总结
    【数据结构系列】线段树(Segment Tree)
    Google Summer of Code 2017 经验谈
    二分查找
    Binary Indexed Tree
    Github-flavored Markdown 导出为 PDF
    Programming Languages
    Select 选择算法
    取样算法
    HTTP Status 500-Servlet.init() for servlet [springmvc] threw exception解决办法
  • 原文地址:https://www.cnblogs.com/yiyide266/p/11923490.html
Copyright © 2011-2022 走看看