php7.0+中mysqli连接提示 Warning: mysqli::mysqli(): (HY000/2002): No such file or directory

原文链接

$mysql = new mysqli('localhost', 'root', 'root', 'test');
在用php连接mysql数据库时出现这个错误。

然后把localhost改为127.0.0.1则问题解决。
$mysql = new mysqli('127.0.0.1', 'root', 'root', 'test');

原因在于:当主机填写为localhost时MySQL会采用 unix domain socket连接,当主机填写为127.0.0.1时MySQL会采用TCP/IP的方式连接。使用Unix socket的连接比TCP/IP的连接更加快速与安全。mysqli函数里面还有很多默认的可选参数,当没有指定时就会默认,但是这里面有一个默认的参数找不到一个文件,所以会报错,此时我们可以修改配置文件来修改默认参数,也可以给它指定这个文件的路径,如下:

如果想使用localhost,在连接时需要指定mysqld.sock(mysql.sock)的位置
比如下面这样:
$mysql = new mysqli('127.0.0.1', 'root', 'root', 'test','3306', '/var/run/mysqld/mysqld.sock');
3306是端口号

如何查找mysqld.sock的位置?
连接到mysql然后输入status;找到unix socket这一行,后面就是mysqld.sock(mysql.sock)路径

你可能感兴趣的:(php7.0+中mysqli连接提示 Warning: mysqli::mysqli(): (HY000/2002): No such file or directory)