【问题标题】:Can't connect to MySQL on Mac -- missing mysql.sock file无法在 Mac 上连接到 MySQL——缺少 mysql.sock 文件
【发布时间】:2011-08-12 16:34:02
【问题描述】:

大约一周前,我在我的 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安装目录:/usr/local/mysql中没有“my.cnf”文件。 XAMPP 附带的 mysql 安装有 my.cnf 文件。那些也将默认套接字列为“/tmp/mysql.sock”,但我必须手动更改它们。

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

【问题讨论】:

  • 对不起,它没有回答这个问题,但我在 Mac 上遇到了各种奇怪的 Apache、PHP 和 MySQL 问题。在花了 3 天的时间尝试修复它之后,我刚刚重新安装了 OS X。我现在改用虚拟机。
  • 我会使用 XAMPP,几乎没有任何配置

标签: php mysql macos mysql-error-2002


【解决方案1】:

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

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

希望对您有所帮助。

【讨论】:

  • 感谢您的回答。它解决了我的问题。
  • 找到mysql | grep sock 只找到/usr/local/Cellar/mysql/5.7.17/include/mysql/mysql/psi/mysql_socket.h
【解决方案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。砰!现在可以了。

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

【讨论】:

    【解决方案3】:

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

    答案竟然是简单的安装dmg文件自带的MySQLStartupItem.pkg,然后重启系统。这会在启动时启动守护进程(我希望这是可选的)。

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

    【讨论】:

    • 这对我来说非常有效,mysql.sock 文件出现在/tmp/ 文件夹中。谢谢!从来没有想过这样做。
    【解决方案4】:

    我遇到了一些类似的错误并最终出现在这里。我正在使用 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

    谢谢!

    【讨论】:

    • 非常感谢。几个小时以来,我一直在寻找解决方案。这个效果很好!!!
    【解决方案5】:

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

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

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

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

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

    希望这对某人有所帮助。

    【讨论】:

      【解决方案6】:

      找到解决办法:
      我有同样的问题,我做了很多搜索,但直到我查看了我的 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 进行了测试,并且都有效
      希望它也对你有用。

      【讨论】:

      • 他的 mysql.sock 在他的计算机中不存在,是要求的,不是要求如何将 DB_SOCKET 放入 .env
      【解决方案7】:

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

      【讨论】:

      • 他在“XAMPP”中说不是在自制软件中
      • 在搜索 homebrew 的同一问题时,会出现此帖子,因此它可能对 homebrew 用户也有帮助。
      猜你喜欢
      • 2019-11-16
      • 2013-10-19
      • 2010-12-11
      • 2011-08-05
      • 2013-09-02
      • 2015-03-09
      • 2012-07-18
      • 2014-07-28
      • 1970-01-01
      相关资源
      最近更新 更多