Laravel; “SQLSTATE [HY000] [2002]连接被拒绝”

问题描述:

我在OSX主机上设置了homestead 2.0并使用Sequel Pro。Laravel; “SQLSTATE [HY000] [2002]连接被拒绝”

我可以做迁移并确认数据是在Sequel Pro中迁移的,所以它看起来没有关于数据库连接的问题。

但是,一旦我尝试从Laravel 4.2应用程序获取数据,它将无法检索数据并出现以下错误。

PDOException (2002) 
SQLSTATE[HY000] [2002] Connection refused 

这是我的mysql配置。

'mysql' => array(
      'driver' => 'mysql', 
      'host'  => '127.0.0.1', 
      'port'  => '33060', 
      'database' => 'homestead', 
      'username' => 'homestead', 
      'password' => 'secret', 
      'charset' => 'utf8', 
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '' 

续集专业设置同上,

Name: 127.0.0.1  
Host: 127.0.0.1 
Username: homestead 
Password: secret 
Database:  
Port: 33060 

我试图改变主机名称为“本地主机”,宅基地和破坏,但没有工作。 为什么?任何建议都有帮助。

+0

MySQL的端口通常是'3306',而不是'33060'。不过,您可能会以不同的方式设置您的系统。仔细检查一下。 – 2015-02-07 18:18:04

+0

'33060'对于续集是正确的,因为这是宅基地虚拟机转发到主机的端口。对于你的App,你需要'3306',因为它在宅基地虚拟机内部运行。 – cgross 2015-02-07 20:20:28

+0

将续集更改为“33060”和宅基地端口“3306”,但没有工作。 – Hanimar 2015-02-08 01:32:03

我有完全相同的问题,我不知道为什么会发生这种情况。 但是改变

'host'  => '127.0.0.1', 

'host'  => 'localhost', 

为我工作。总是比我们期望的简单!

+0

这是因为localhost可以是127.0.0.1或者:: 1 – maztch 2015-05-07 10:24:47

+0

感谢那个;) – daneczech 2015-05-11 11:24:53

+2

我这样做了,但没有工作 – 2016-02-15 17:40:37

'mysql' => array(
      'driver' => 'mysql', 
      'host'  => 'localhost', 
      'database' => 'homestead', 
      'username' => 'homestead', 
      'password' => 'secret', 
      'charset' => 'utf8', 
      'collation' => 'utf8_unicode_ci', 
      'prefix' => '' 

尝试了这一点,可能对你

对于其他的开发者还有谁是在其上运行Laravel作品的最新版本(5.3),我只是更改这些行:

DB_HOST=127.0.0.1 
DB_PORT=3306 

进入这个:

DB_HOST=localhost 
DB_PORT=33060 

显然,33060将被转换成3306,但现在不能解释为什么localhost应该工作。

+0

这对我没有用。 – Ryan 2017-04-05 13:49:58

由于某种原因,上述两种工作方式都遇到了同样的问题。对我而言,我在.env中尝试了这一点,我将DB_HOST更改为homestead.local。霍姆斯特德是我的网站的名字。这工作。

DB_HOST=homestead.local 

我解决了在Laravel的.env文件中的主机参数上替换地址127.0.1.1到localhost的问题。我正在使用GNU/Linux Debian 8,Laravel 5.6.3,PHP 7.1.8,Apache 2.4.27和(Mysql)10.1.26-MariaDB。