【问题标题】:Why 127.0.0.1 won't work in Laravel .env & database.php files but 'localhost' will?为什么 127.0.0.1 不能在 Laravel .env 和 database.php 文件中工作,但 'localhost' 会?
【发布时间】:2017-12-24 02:45:40
【问题描述】:

首先让我说我解决了sqlstate[hy000] [2002] connection refused 的问题,方法是遵循这个stackoverflow 问题:Laravel: SQLSTATE[HY000] [2002] Connection refused

但是我对为什么 localhost 有效而 127.0.0.1 无效感到困惑。有人可以解释这些差异吗?只要您的 127.0.0.1 映射到 /etc/hosts 文件中的 localhost,我认为它们是相同的。

不太确定这个问题是否需要更多信息,如果需要,我很乐意提供。

编辑:对不起,如果这是一个措辞不佳的问题,我尽可能简单地提出问题。考虑到这个问题的“问题”不再存在,我真的只是在寻找更多关于为什么上述 Stackoverflow 问题中的答案有效的解释。该答案没有提供太多信息。如果我自己这么说的话,答案就不好。

编辑 2:我的系统设置包括 Virtualbox、Vargant 和 Laravel Homestead。我在 33060 处设置了一个 mysql 端口(设置时的标准端口)的 vagrant box。我可以通过 SQLPro 连接到 127.0.0.1:33060 就好了。但是,通过我的 Laravel 应用程序,我无法仅通过 127.0.0.1 本地主机连接。如果我能够使用应用程序中的 localhost 和 SQLPro 中的 127.0.0.1 进行连接,这仍然是我的 mysql 配置的问题吗?这是否意味着我应该能够连接到其中一个或反之亦然?

【问题讨论】:

标签: php mysql laravel


【解决方案1】:

正如这个 serverfault 问题MySQL cannot connect via “localhost”, only 127.0.0.1 中所解释的,mysql 在指定 localhost 时连接到 unix 套接字,但如果提供 127.0.0.1 则连接到网络套接字。

根据您的 mysql 配置方式,可能不是两个通道都可用。此外,操作系统或防火墙配置也可能会阻止 mysql 使用网络连接。

【讨论】:

  • 您必须通过跟踪连接来检查sqlpro如何连接到mysql。我不知道那个应用程序。
  • 好的,因为它有两个不同的应用程序......我认为它们以相同的方式连接......我认为所有应用程序都是如此。大声笑只是运行连接的不同命令...用于 php 的 PDO 等。
猜你喜欢
  • 2017-07-21
  • 2018-06-28
  • 1970-01-01
  • 2017-03-10
  • 2018-08-30
  • 1970-01-01
  • 2019-06-16
  • 1970-01-01
  • 2020-04-28
相关资源
最近更新 更多