SQLSTATE [HY000] [2002]连接在Laravel宅基地内被拒绝

问题描述 投票:27回答:22

使用Mac OS X和Homestead 2.2.1与Laravel 5.2。

在终端(在我的项目文件夹中的宅基地内)我可以做php artisan来查看所有可用的命令。当我尝试运行php artisan migrate时出现连接错误: SQLSTATE[HY000] [2002] Connection refused


我已经使用这些.env设置设置了Laravel项目

DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret

我还尝试过DB_HOST的localhost和DB_USERNAME以及DB_PASSWORD的root。所有这些可能的变化放在一起!


在Sequel Pro(数据库管理应用程序)中,我可以连接这些设置

Host       127.0.0.1
Username   homestead
Password   secret
Database   tcv
Port       33060

但是这个数据库显然是空的,因为我无法从终端迁移到它...

据我所知,这是一个配置问题,因为我可以使用Sequel Pro连接它。但我老老实实地没有想到什么是错误的设置。

谢谢您的帮助 !!

编辑 出于某种原因,当我将项目移动到MAMP并运行php artisan migrate时,我得到了相同的SQLSTATE[HY000] [2002] Connection refused错误。 现在我完全迷失了......

php laravel-5 migration homestead artisan
22个回答
47
投票

我刚刚碰到这个,发现将.env文件中的这个从127.0.0.1更改为localhost修复了它。

DB_HOST=localhost

3
投票

将所有配置放在.env文件后,如果您已经运行php artisan serve,那么RESTART IT。


2
投票

您的mysql可能尚未启动或未启动到3306端口


1
投票

我,我使用流浪汉,但我在框外执行php工匠所以基本上它没有权限


1
投票

对我来说,用引号括起凭证就可以了

DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE='zzz'
DB_USERNAME='yyy'
DB_PASSWORD='XXX'

0
投票

如果您使用Homestead,那么您应该使用默认的mysql端口运行它。因此,您应该在.env文件中使用DB_PORT=33060,而不是使用DB_PORT=3306。此外,请记住在家园安装中运行php artisan migrate命令,一切都应该没问题。

希望有所帮助。


0
投票

解决它的唯一问题是将连接细节放在config / database.php而不是.env文件中。希望这可以帮助


0
投票

我有一个类似的问题,这里没有任何建议帮助我。这解决了我的问题是使用相同的值设置应用程序名称和数据库主机名。在我的情况下,127.0.0.1正常工作。

APP_URL=127.0.0.1

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=zzz
DB_USERNAME=yyy
DB_PASSWORD=XXX

0
投票

好的更新似乎主机不是问题,但实际上是端口。

所以它实际上是用于浏览器测试的端口3306,还用于终端和Sequel Pro 33060.它是否与在Homestead.yaml中添加它并将其设置在这里有关?

在阅读与Laravel相关的设置时,它说:

MySQL:33060→前锋到3306


0
投票

我可能是因为你可能没有重新启动PHP工匠

所以在进行数据库更改和配置后:清除Tinker工作正常

但要使浏览器反映您需要重新运行的新数据库连接

php工匠服务


0
投票
  1. 从任务管理器终止sqld
  2. 从xampp控制面板停止MySQL并重新启动它

如果它仍然抛出相同的问题,从根文件夹运行

php artisan cache:clear
php artisan config:cache
php artisan serve
  1. 如果你仍然有问题,请检查你是否使用sql server的多个副本,例如通过Ubuntu app,如果是这样,请停止ubuntu中的MySQL服务器 sudo服务MySQL停止

33
投票

问题

在Laravel中,您有config/database.php,其中所有连接设置都位于此处。您还在项目的根目录中有一个.env文件(每个人都用它来节省时间)。这包含可用于整个项目的变量。

在标准的L5项目中,config/database.php的MySql部分如下所示:

    'mysql' => [
        'driver'    => 'mysql',
        'host'      => env('DB_HOST', 'localhost'),
        'database'  => env('DB_DATABASE', 'forge'),
        'username'  => env('DB_USERNAME', 'forge'),
        'password'  => env('DB_PASSWORD', ''),
        'charset'   => 'utf8',
        'collation' => 'utf8_unicode_ci',
        'prefix'    => '',
        'strict'    => false,
        'engine'    => null,
    ],

请注意,没有设置端口!

虽然在我的.env文件中我设置了DB_PORT=33060。但那value (3306)从未被读入config/database.php。 所以不要像我一样傻瓜,忘记检查database.php文件。


FIX
Simply add 'port' => env('DB_PORT', 3306), to your config/database.php and set that value in .env like this DB_PORT=33060

0
投票

我遇到了

SQLSTATE [HY000] [2002]拒绝连接(SQL:select * from projects)

原因是我没有启动MySQL服务器。

检查MySQL是否正在运行作为纠正错误的第一步可能会有所帮助。


0
投票
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8080
DB_DATABASE=flap_safety
DB_USERNAME=root
DB_PASSWORD=mysql

上面给出的是我的.env

    'mysql' => [
        'driver' => 'mysql',
        'url' => env('DATABASE_URL'),
        'host' => env('DB_HOST', 'mysql'),
       // 'port' => env('DB_PORT', '8080'),
        'database' => env('DB_DATABASE', 'forge'),
        'username' => env('DB_USERNAME', 'forge'),
        'password' => env('DB_PASSWORD', 'mysql'),
        'unix_socket' => env('DB_SOCKET', ''),
        'charset' => 'utf8mb4',
        'collation' => 'utf8mb4_unicode_ci',
        'prefix' => '',
        'prefix_indexes' => true,
        'strict' => true,
        'engine' => null,
        'options' => extension_loaded('pdo_mysql') ? array_filter([
            PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'),
        ]) : [],
    ],

上面给出的是我的database.php文件。我刚刚从database.php注释掉了端口,它对我有用。


21
投票

如果您在Mac OS上使用MAMP,请将以下行添加到您的mysql数据库配置文件中

'unix_socket' => env('DB_SOCKET', ''),

并在你的.env文件中添加

DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

13
投票

使用localhost而不是127.0.0.1(在.env文件中),然后运行命令:

php artisan config:cache

10
投票

对于有问题的其他人来说,另一种解决方案我有所有设置正确但由于某种原因我的更改没有更新。 Laravel实际上缓存了配置文件(我发现它完全是愚蠢的)。

更新配置后,这是我的解决方案:

php artisan config:clear


7
投票

我遇到了这个问题。当与Sequel Pro连接时,我需要使用33060作为端口,但在.env文件中它必须是3306。我在.env文件中有33060。将其更改为3306并且有效。


5
投票

这是一个简单的修复。您的mysql数据库已丢失与服务器的连接。如果您正在运行本地服务器,请在终端中运行:

mysqld

这将重新连接您的数据库。然后(如果你使用自制软件)运行:

brew services start mysql

这将在登录时自动连接您的数据库。


4
投票

我有同样的问题,尝试这个工作

DB_HOST=localhost

3
投票

在我的情况下,这个错误出现了蓝色。在盯着我已经意识到的那个神秘错误时,我试图在vm之外运行命令......

© www.soinside.com 2019 - 2024. All rights reserved.