[PHP]关于连接MySQL的问题

Posted yiyide266

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[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服务;

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

 

以上是关于[PHP]关于连接MySQL的问题的主要内容,如果未能解决你的问题,请参考以下文章

[PHP]关于连接MySQL的问题

使用 json rereiver php mysql 在片段中填充列表视图

php关于mysql数据库简单回滚问题

连接MySQL出现错误:ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: YES)(代码片段

关于mysql驱动版本报错解决,Cause: com.mysql.jdbc.exceptions.jdbc4Unknown system variable ‘query_cache_size(代码片段

关于利用PHP访问MySql数据库的逻辑操作以及增删改查实例操作