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

时间:2011-04-26 00:45:56

标签: php mysql macos mysql-error-2002

我大约一周前在我的Mac OS 10.6上安装了MySQL,经过一些游戏后,让它工作得很好。它与python MySQLdb集成,我也有Sequel Pro连接到数据库。但是,php不会访问服务器。甚至在我将一个php.ini文件添加到/ etc /并将其指向Sequel Pro使用的相同袜子之后:/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安装目录中没有“my.cnf”文件:/ usr / local / mysql。有一些my.cnf文件用于XAMPP附带的mysql安装。那些也有默认套接字列为'/tmp/mysql.sock',但我不得不手动更改它们。

任何想法发生了什么?为什么修改php.ini文件也会为Sequel Pro做出改变?

7 个答案:

答案 0 :(得分:20)

首先,我建议您使用自制软件在Mac上安装任何第三方库或工具。请查看:http://mxcl.github.com/homebrew/

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

在您的终端尝试类似:

locate mysql | grep sock

你会得到类似的东西:

/the/path/to/mysql.sock

然后做:

ln -s /the/path/to/mysql.sock /tmp/mysql.sock

这应该有效。

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

希望得到这个帮助。

答案 1 :(得分:5)

我得到了一些类似的错误并最终到了这里。我使用的是OSX 10.9.5。这解决了我的问题(希望它可以帮助某人)。

1)sudo mkdir / var / mysql

2)sudo ln -s /private/tmp/mysql.sock /var/mysql/mysql.sock

更多信息:http://glidingphenomena.blogspot.com.br/2010/03/fixing-warning-mysqlconnect-cant.html

谢谢!

答案 2 :(得分:4)

好的,我只花了几个小时来解决同样的问题。我在带有OSX 10.7.2的iMac上为osx 10.6安装了MySql 5.5.20(64位)的dmg文件 - 而且缺少/tmp/mysql.sock!

答案结果是简单地安装dmg文件附带的MySQLStartupItem.pkg并重新启动系统。这会在启动时启动守护进程(我希望它是可选的)。

奇怪的是,我的/tmp/mysql.sock文件出现了,一切都很好!

答案 3 :(得分:2)

我要在这里投两分钱,因为我也有这个问题,但我的情况对大多数人来说都是不正常的。我的系统混合安装了Zend Server CE和XAMPP。我正在运行Mac OS X.我决定从我的系统中删除Zend,因为这对我的屁股很痛苦。

删除Zend后,由于两者都使用相同的数据库而Zend拥有它,我的系统变得疯狂。卸载并重新安装XAMPP没有帮助。经过几个小时(我刚刚完成)的故障排除后,我发现我需要在系统中搜索所有副本my.cnf。原因是mysql仍然试图寻找Zend mysql路径并且它失败了。

所以我用locate找到它。我不得不启动locate(因为我之前从未使用过它),因此它可以在我的系统上构建一个DB文件。然后我运行“locate my.cnf”,我在“/ private / etc”中找到了一个。所以我只是将文件重命名为my.cnf.old并尝试再次启动MySQL。巴姆!它现在有效。

我会说这个,我不得不让一个同事帮助我,因为我只是在转动这个轮子。我真的希望这可以帮助那里的人。谢谢!

答案 4 :(得分:2)

我在新安装的XAMPP上也遇到了这个错误。

对于那些不熟悉命令行的人,还有另一种方式。

根据上述建议(谢谢),我使用旧标准“Easy Find”找到my.cnf的最新版本。在编辑器中打开文件后,我发现套接字文件指向:

socket = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

我将Navicat的高级属性/使用套接字文件更新到上面的路径和宾果游戏。

希望这有助于某人。

答案 5 :(得分:0)

找到解决方案:
我有同样的问题,我做了很多搜索,但直到我查看我的MySql配置文件后无法解决问题。 在我的配置文件中,套接字在第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进行了测试,两者都有效
希望它也适合你。

答案 6 :(得分:0)

如果您是通过自制软件安装的,则简单的brew services restart mysql可能会有所帮助。