今天在使用PHP的CLI方式访问mysql数据库时出现了一个 No such file or directory的错误,查找资料并在最终解决后记录一下。
这个问题应该也会存在于非CLI方式访问,简单的代码是这样的:
<?php
$mysqli = new mysqli(‘localhost’, ‘root’, ‘root’, ‘test’);
如果上面的连接地址是 localhost 就会报此错误,改成 127.0.0.1 后正常。
当主机填写为localhost时MySQL会采用 unix domain socket连接,当主机填写为127.0.0.1时MySQL会采用TCP/IP的方式连接。使用Unix socket的连接比TCP/IP的连接更加快速与安全。这是MySQL连接的特性,可以参考官方文档的说明4.2.2. Connecting to the MySQL Server。
这个问题有以下几种解决方法:
使用TCP/IP代替Unix socket。即在连接的时候将localhost换成127.0.0.1。
修改MySQL的配置文件my.cnf,指定mysql.socket的位置:
/var/lib/mysql/mysql.sock (你的mysql.socket路径)。
直接在php建立连接的时候指定my.socket的位置(官方文档:mysqli_connect)。比如:
$db = new MySQLi(‘localhost’, ‘root’, ‘root’, ‘my_db’, ‘3306’, ‘/var/run/mysqld/mysqld.sock’)
本文转自:http://www.111cn.net/database/mysql/103734.htm
本站提供各类电子书下载,有需求可联系站长。微信:guizhen998. WhatsApp:https://wa.me/14422221313