8

大约一周前,我在我的 Mac OS 10.6 上安装了 MySQL,经过一番尝试后,它就可以正常工作了。它与 python MySQLdb 集成,我还让 Sequel Pro 连接到数据库。但是,php 不会访问服务器。即使在我将 php.ini 文件添加到 /etc/ 并将其指向 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安装目录下没有“my.cnf”文件:/usr/local/mysql。XAMPP 附带的 mysql 安装有 my.cnf 文件。那些也将默认套接字列为“/tmp/mysql.sock”,但我必须手动更改它们。

有什么想法吗?为什么修改 php.ini 文件也会对 Sequel Pro 产生变化?

4

7 回答 7

20

首先,我建议您使用自制软件在您的 Mac 上安装任何第三方库或工具。看看:链接

否则,对于您的问题,您可以搜索 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 套接字的正确路径。

希望这有帮助。

于 2011-04-26T02:59:08.073 回答
5

我遇到了一些类似的错误并最终出现在这里。我正在使用 OSX 10.9.5。这解决了我的问题(希望对某人有所帮助)。

1) 须藤 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

谢谢!

于 2014-10-02T18:04:36.627 回答
4

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

The answer turned out to be simply install the MySQLStartupItem.pkg that comes with the dmg file and restart the system. This starts up the daemons upon startup (which I hoped would be optional).

Magically, my /tmp/mysql.sock file appeared and all is well!

于 2012-01-19T01:38:14.673 回答
4

我在全新安装 XAMPP 时也遇到了这个错误。

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

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

套接字 = /Applications/XAMPP/xamppfiles/var/mysql/mysql.sock

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

希望这可以帮助某人。

于 2015-01-19T15:41:04.370 回答
2

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

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

所以我用定位来找到它。我必须启动定位(因为我以前从未使用过它),以便它可以在我的系统上构建文件数据库。然后我运行“locate my.cnf”并在“/private/etc”中找到了一个。所以我只是将文件重命名为 my.cnf.old 并尝试再次启动 MySQL。砰!现在可以了。

我会这么说,我必须让一位同事帮助我,因为我只是在这个上旋转我的轮子。我真的希望这可以帮助那里的人。谢谢!

于 2011-08-05T19:30:20.170 回答
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 进行了测试,并且两者都有效,
希望它也对您有用。

于 2015-06-22T22:01:41.980 回答
0

如果你已经通过自制软件安装了 mysql,simplebrew services restart mysql可能会有所帮助。

于 2020-01-27T16:41:10.023 回答