无法连接Mac上的MySQL--缺少mysql.sock文件

8
我在一周前在我的Mac OS 10.6上安装了MySQL,经过一些尝试后,它可以正常工作。它与python的MySQLdb集成良好,并且我也成功地连接了Sequel Pro到数据库。然而,php无法访问该服务器,即使我已经在/etc/添加了一个php.ini文件,并将其指向Sequel Pro使用的相同sock:/tmp/mysql.sock。
但是现在我无法访问本地服务器。据我所知,在我的计算机上没有mysql.sock文件,不在/tmp/或任何其他地方。
我可以从终端启动mysql服务器,但是一分钟后它会自动退出登录:
110425 17:36:18 mysqld_safe Logging to '/usr/local/mysql/data/dn0a208bf7.sunet.err'.
110425 17:36:18 mysqld_safe Starting mysqld daemon with databases from /usr/local/mysql/data
110425 17:37:58 mysqld_safe mysqld from pid file /usr/local/mysql/data/dn0a208bf7.sunet.pid ended

如果我尝试从命令行调用“mysql”(之前完美运行):

ERROR 2002 (HY000): Can\'t connect to local MySQL server through socket '/tmp/mysql.sock' (2)

PHP错误当然也是类似的:

PHP Warning:  mysql_real_escape_string(): [2002] No such file or directory (trying to connect via unix:///tmp/mysql.sock)

此外,在我的mysql安装目录/usr/local/mysql中没有“my.cnf”文件。对于随XAMPP一起安装的mysql安装程序,有my.cnf文件。它们也将默认套接字列为“/tmp/mysql.sock”,但我必须手动更改它们。
你们有什么想法?为什么修改php.ini文件会对Sequel Pro产生影响?

抱歉这并没有回答问题,但是我在 Mac 上遇到了各种奇怪的 Apache、PHP 和 MySQL 问题。尝试了三天仍无法解决,最终只好重新安装 OS X 系统。现在我转而使用虚拟机来工作。 - Dan Blows
我会使用XAMPP,几乎不需要任何配置。 - Doug Molineux
7个回答

20

首先,我建议您在Mac上使用Homebrew来安装任何第三方库或工具。请查看:链接

否则,针对您的问题,您可以搜索一下Mac上的mysql socket位置,然后将其符号链接到/tmp。

在终端中尝试执行以下命令:

locate mysql | grep sock
你将得到类似以下的内容:
/the/path/to/mysql.sock
那么就执行:
ln -s /the/path/to/mysql.sock /tmp/mysql.sock

这应该能够起作用。

同时,您可以编辑您的php.ini文件,以设置mysql套接字的正确路径。

希望这有所帮助。


1
查找 mysql | grep sock 仅找到 /usr/local/Cellar/mysql/5.7.17/include/mysql/mysql/psi/mysql_socket.h - kamal

5

非常感谢。我已经寻找解决方案几个小时了。这个方法非常有效!!! - tmuecksch

4
我在新安装的XAMPP上也遇到了这个错误。 对于那些不熟悉命令行的人,还有另一种方法。 根据上面的建议(谢谢),我使用了我旧版的 "Easy Find" 来查找最新版本的 my.cnf。在编辑器中打开文件后,我发现套接字文件指向: socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock 我更新了 Navicat 的高级属性/ 使用套接字文件到以上路径,然后就可以了。 希望这能帮助某些人。

4
好的,我刚刚花了几个小时来解决同样的问题。我在我的iMac上安装了适用于OSX 10.6的MySql 5.5.20 (64位) dmg文件,但是/tmp/mysql.sock文件失踪了!
答案很简单,只需安装dmg文件中附带的MySQLStartupItem.pkg并重新启动系统即可。这将在启动时启动守护进程(我希望这是可选的)。
神奇的是,我的/tmp/mysql.sock文件出现了,并且一切正常!

这对我来说完美地解决了问题,mysql.sock文件出现在/tmp/文件夹中。非常感谢!我从未想过要这样做。 - Friendly King

2
我想就此提供一些建议,因为我也遇到过这个问题,但我的情况与大多数人不同。我的系统安装了Zend Server CE和XAMPP。我使用的是Mac OS X。因为Zend让我很烦恼,所以我决定将其从系统中删除。
在删除Zend后,由于两者都在使用同一个数据库且Zend已经占用它,我的系统变得混乱了。卸载并重新安装XAMPP没有帮助。经过几个小时(我刚刚完成)的疑难解答,我发现需要搜索我的系统中所有的my.cnf副本。原因是mysql仍然试图寻找Zend mysql路径,但失败了。
因此,我使用locate来查找它。我必须启动locate(因为我以前从未使用过它),以便它可以在我的系统上构建文件数据库。然后我运行“locate my.cnf”,并在“/ private / etc”中找到了一个。所以我只是将该文件重命名为my.cnf.old,然后尝试再次启动MySQL。哇!现在它可以工作了。
我要说的是,在这个问题上,我必须让同事帮助我,因为我只是在原地打转。我真的希望这能帮助到某些人。谢谢!

0
找到解决办法:
我也遇到了同样的问题,花了很长时间进行搜索,但是一直无法解决,直到我查看了我的MySql配置文件。 在我的配置文件中,socket位于第21行,并且路径为
"/Applications/AMPPS/var/mysql.sock"

在Ampps应用程序中,单击MySql选项卡,然后单击配置按钮。

您还可以在“/Applications/AMPPS/mysql/etc”文件夹中找到该配置文件。

所以简单地添加
'unix_socket' => '/Applications/AMPPS/var/mysql.sock',
到我的mysql数组的database.php文件中,它对我起作用了。
在主机行之后。 我已经测试过localhost和127.0.0.1,两者都可以工作
希望这对你也有用。


他的计算机中没有mysql.sock文件,他所需要的是解决此问题,而不是要求将DB_SOCKET放入.env文件中。 - Fernando Torres

0
如果您是通过Homebrew安装的MySQL,只需运行brew services restart mysql即可。

他说在“XAMPP”中,而不是在homebrew中。 - Fernando Torres
在搜索有关Homebrew的相同问题时,出现了这篇文章,因此对于Homebrew用户也可能会有所帮助。 - Simon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接