【问题标题】:Tried every thing still getting ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in mac尝试了一切仍然得到 ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in mac
【发布时间】:2013-11-14 00:18:21
【问题描述】:

每次我运行 XAMPP 并尝试运行 $mysql -u root -p 时,都会向我抛出一个错误:

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

我在 Mac OS-10.9 中使用 XAMPP 版本 1.7.3。启动 Apache 和 MySQL 没有问题,我已经通过活动监视器确认 Apache 已启动。

我尝试了几件事:

  1. 通过在终端中输入以下命令来检查 MySQL 是否正在运行:mysqladmin -u root -p status。结果是:

    mysqladmin: 连接到 'localhost' 的服务器失败 错误:'无法通过套接字'/tmp/mysql.sock'(2)连接到本地MySQL服务器' 检查 mysqld 是否正在运行并且套接字:'/tmp/mysql.sock' 存在!

  2. 我检查并在/var/mysql/mysql.sock找到了mysql.sock文件。

可能会触发此错误但无法说出问题所在的事情:

  1. 我最近将操作系统从 Mountain Lion 升级到了 Mavericks。
  2. 我还安装了单独的 MySQL 以使用 Ruby on Rails。我已确定该版本已关闭。

如果不解决此问题,我将无法在本地进行任何开发,并且在 PHP 脚本中连接 MySQL 似乎是不可能的。因此,我们将不胜感激。

这是来自/applications/xampp/xamppfiles/logs/error_log的error_log文件:

[Sat Nov 02 09:56:31 2013] [notice] caught SIGTERM, shutting down
[Sat Nov 02 09:56:39 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Nov 02 09:56:40 2013] [notice] Digest: generating secret for digest authentication ...
[Sat Nov 02 09:56:40 2013] [notice] Digest: done
[Sat Nov 02 09:56:40 2013] [notice] Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Sat Nov 02 12:55:47 2013] [notice] caught SIGTERM, shutting down
[Sat Nov 02 13:40:16 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Nov 02 13:40:18 2013] [notice] Digest: generating secret for digest authentication ...
[Sat Nov 02 13:40:18 2013] [notice] Digest: done
[Sat Nov 02 13:40:18 2013] [notice] Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Sat Nov 02 15:12:39 2013] [notice] caught SIGTERM, shutting down
[Sat Nov 02 20:54:41 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Nov 02 20:54:43 2013] [notice] Digest: generating secret for digest authentication ...
[Sat Nov 02 20:54:43 2013] [notice] Digest: done
[Sat Nov 02 20:54:44 2013] [notice] Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Sat Nov 02 21:10:53 2013] [notice] caught SIGTERM, shutting down
[Sat Nov 02 21:10:57 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Nov 02 21:10:58 2013] [notice] Digest: generating secret for digest authentication ...
[Sat Nov 02 21:10:58 2013] [notice] Digest: done
[Sat Nov 02 21:10:58 2013] [notice] Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Sat Nov 02 21:31:39 2013] [notice] caught SIGTERM, shutting down
[Sat Nov 02 21:31:44 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sat Nov 02 21:31:47 2013] [notice] Digest: generating secret for digest authentication ...
[Sat Nov 02 21:31:47 2013] [notice] Digest: done
[Sat Nov 02 21:31:47 2013] [notice] Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
[Sat Nov 02 21:45:07 2013] [notice] caught SIGTERM, shutting down
[Sun Nov 03 08:50:06 2013] [warn] Init: Session Cache is not configured [hint: SSLSessionCache]
[Sun Nov 03 08:50:09 2013] [notice] Digest: generating secret for digest authentication ...
[Sun Nov 03 08:50:09 2013] [notice] Digest: done
[Sun Nov 03 08:50:10 2013] [notice] Apache/2.2.14 (Unix) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l PHP/5.3.1 mod_perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations  

   

【问题讨论】:

  • 你是否增加了 my.cnf 中的 max_connection 大小?

标签: php mysql macos sockets


【解决方案1】:

不确定如何在 mac 上获得正在运行的程序列表,但您应该尝试验证 mysqld 是否确实在运行。 (在 linux 上,“top -bn1 | grep mysql”如果正在运行,通常会显示一行信息,否则不显示。)

您也可以尝试停止 mysqld 并查看 /tmp/mysql.sock 是否消失。如果没有,请尝试删除它并重新启动 mysql 以查看它是否再次出现。 (应该)

您是否有任何日志文件可以显示正在发生的事情?

【讨论】:

  • 我在 tmp 文件夹下找不到 mysql.sock 文件。 RoshanComputer:tmp Roshan$ pwd /tmp RoshanComputer:tmp Roshan$ ls -la total 0 drwxrwxrwt 7 root wheel 238 Nov 3 08:53 . drwxr-xr-x@ 6 根轮 204 Oct 28 21:14 .. drwx------ 3 Roshan 轮 102 Nov 2 18:57 launch-6U3stf drwx------ 3 Roshan 轮 102 Nov 2 18 :57 launch-JtLO7T drwx------ 3 Roshan 轮子 102 Nov 2 18:57 launchd-160.pc1D6V drwx-- 3 _spotlight 轮子 102 Nov 2 18:58 launchd-320.Jgh4Fa drwx-- ---- 3 根轮 102 Nov 2 21:45 launchd-3875.fJ7OWJ
  • 这表明 mysql 实际上并没有运行。看看你是否能找到某种类型的日志文件。也许熟悉 MAC 上事物所在位置的其他人可以插话并指出它们。日志可能会显示某种错误。
  • 对不起,我在错误的路径中寻找 /tmp 而不是 /applications/xampp/xamppfiles/tmp。实际上mysql.sock文件在那里,我试图关闭xampp服务并且文件没有消失。所以我手动删除。在我重新启动 xampp 后,没有创建 mysql.sock 文件。尝试在 mac 中查找 mysql 的日志文件但没有运气。
  • 为了确认 mysql 正在运行,我检查了活动监视器,mysqld 正在向它显示该窗口,当我关闭它时,当我打开 xampp 时它会重新出现。我想这意味着mysql正在工作。但不知道是什么问题?
  • 也许下面的链接会有所帮助。 (它有一个屏幕截图建议在哪里可以找到日志)我现在需要睡觉,所以今晚不能再回复了。祝你好运。 stackoverflow.com/questions/14097399/…
【解决方案2】:

终于设法解决了。 首先,我查看了错误的目录,我应该查看/applications/xampp/xamppfiles/

我做过的事情清单:

  1. /applications/xampp/xamppfiles 下没有 tmp 文件夹,所以我创建了它(mkdir tmp)。

  2. 我搜索了mysql.sock文件,在/applications/xampp/xamppfiles/var/mysql/mysql.sock下找到了。

由于 mysql 服务器连接无法通过套接字 /tmp/mysql.sock 工作,我使用以下命令将我的 /applications/xampp/xamppfiles/var/mysql/mysql.sock 指向 /tmp/mysql.sock 文件。

所以这个命令成功了:

ln -s /applications/xampp/xamppfiles/var/mysql/mysql.sock /tmp/mysql.sock
  1. 现在我重新启动xampp服务并运行:mysql -u root -p,我可以进入mysql控制台。我还尝试从 php 脚本连接 mysql 并且运行正常。

在拉了一天半的头发后,我终于设法让它工作了,希望人们会觉得这很有帮助。

【讨论】:

    【解决方案3】:

    看起来你的 mysql 服务器没有启动。使用以下命令:

    mysqld stop
    mysql.server start
    

    【讨论】:

      【解决方案4】:

      XAMPP mac 有默认设置存储 mysql.sock 另一个位置。 改一下就好了:)

      $ vim /applications/xampp/xamppfiles/etc/my.cnf
      
      [client]
      #password   = your_password
      port        =3306
      #socket     =/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
      socket      =/tmp/mysql.sock         <---------
      
      ...
      
      [mysqld]
      user=mysql
      port=3306
      #socket     =/Applications/XAMPP/xamppfiles/var/mysql/mysql.sock
      socket      =/tmp/mysql.sock        <---------
      

      重启mysql,就可以了。

      【讨论】:

        猜你喜欢
        • 2014-10-16
        • 2020-08-11
        • 2021-03-31
        • 2018-05-15
        • 2013-10-06
        • 2023-03-20
        • 1970-01-01
        • 2021-05-04
        相关资源
        最近更新 更多