警告: mysql_connect(): [2002] 没有这样的文件或目录(试图通过 unix:///tmp/mysql.sock 连接)

2022-08-30 06:12:26

我正在尝试使用Apple上的终端(使用PHP)连接到我的MySQL数据库。

昨天它工作正常,现在我突然在标题中得到了错误。

当我使用浏览器运行脚本(我安装了 XAMPP)时,该脚本可以正常工作,但终端拒绝连接到数据库。

以下是我包含的用于连接的文件(当我不包含此文件时,脚本可以正常工作,但随后它不会连接到数据库):

<?php
    mysql_connect("localhost", "root", "") or die(mysql_error());
    mysql_select_db("FNB1C_data") or die(mysql_error());
?>

这应该有效,因为它可以与我的浏览器一起使用。

我在终端上使用的命令是 。php scriptname.php


答案 1

由于某种原因,OS X上的mysql使所需套接字文件的位置有点错误,但幸运的是,该解决方案就像设置符号链接一样简单。

你可能有一个套接字(显示为零长度文件)为 或 ,但一个或多个应用正在其他位置查找它。使用此命令找出答案:/tmp/mysql.sock/var/mysql/mysql.sock

ls -l /tmp/mysql.sock /var/mysql/mysql.sock

无需移动套接字,编辑配置文件,并且必须记住将编辑后的文件保留在本地并远离路径正确的服务器,只需创建一个符号链接,以便Mac找到所需的套接字,即使它在错误的位置查找!

如果你有但没有,那么.../tmp/mysql.sock/var/mysql/mysql.sock

cd /var 
sudo mkdir mysql
sudo chmod 755 mysql
cd mysql
sudo ln -s /tmp/mysql.sock mysql.sock

如果你有但没有,那么.../var/mysql/mysql.sock/tmp/mysql.sock

cd /tmp
ln -s /var/mysql/mysql.sock mysql.sock

您将需要创建目录和链接的权限,因此,如有必要,只需在上面的命令前面加上 sudo 前缀即可。


答案 2

我也有这个错误,但只能通过这里的建议来解决它。

总而言之,请使用:

127.0.0.1

而不是:

localhost

原因是“localhost”是MySQL驱动程序的特殊名称,使其使用UNIX套接字连接到MySQL而不是TCP套接字。


推荐