Laravel; "SQLSTATE[HY000] [2002] Connection refused" 拉拉维尔(Laravel); "SQLSTATE[HY000] [2002] 连接被拒绝"

8

我在OSX主机上使用Sequel Pro设置了Homestead 2.0。

我可以进行迁移,并在Sequel Pro中确认数据已经迁移,因此DB连接没有问题。

但是一旦我尝试从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'    => ''

Sequel Pro的设置与上述相同。

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

我试图将主机名更改为“localhost”,然后销毁并启动Homestead,但是没有起作用。为什么?任何建议都有帮助。

MySQL的端口通常是3306,而不是33060。虽然您可能已经设置了不同的系统,但请再次确认一下。 - O. Jones
在Sequel中,33060是正确的端口,因为homestead VM将其转发到您的主机。但对于您的应用程序,需要使用3306,因为它在homestead VM内运行。 - cgross
更改了 Sequel 至'33060' 和本地端口 '3306',但是无效。 - Hanimar
这个回答解决了你的问题吗?Laravel homestead中SQLSTATE [HY000] [2002] Connection refused - shmuels
7个回答

16
我遇到了完全相同的问题,但不确定为什么会发生这种情况。无论如何,更改

'host'      => '127.0.0.1',

'host'      => 'localhost',

对我而言起作用了。总是比我们期望的简单!


1
这是因为本地主机可以是127.0.0.1或::1。 - maztch
2
127.0.0.1 => 连接被拒绝,localhost => 无此文件或目录 我认为,127.0.0.1 是“更好”的错误提示。 - Dennis Schaffer

3

对于其他正在使用 Laravel 最新版本(5.3)的开发人员,我只需更改以下这些行:

DB_HOST=127.0.0.1
DB_PORT=3306

转化为:

DB_HOST=localhost
DB_PORT=33060

显然,33060将被转换为3306,但目前还无法解释为什么localhost应该起作用。

1

我解决了这个问题,将Laravel的.env文件中的host参数地址从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。


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

你可以试试这个,也许对你有用


0

我通过更新Mariadb解决了这个问题。我使用'brew outdated'检查了哪些内容已过时,然后使用'brew upgrade mariadb'更新了Mariadb,重新加载Vagrant,问题得到了解决。希望这对你有用。


0

我遇到了同样的问题,但以上两种方法都没有奏效。对我来说,在.env文件中将DB_HOST更改为homestead.local。Homstead是我的站点名称。这个方法有效。

DB_HOST=homestead.local

0

请检查您的.env文件是否设置MYSQL_SSL=true。 我们在生产环境中使用MySQL SSL,但在开发环境中不使用。在注释掉#MYSQL_SSL=true后,迁移成功运行。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接