Php SQLSTATE[HY000][2002]在Laravel homestead内拒绝连接
使用Mac OS X和Homestead 2.2.1以及Laravel 5.2 在终端中(在我的项目文件夹中的homestead中),我可以使用php artisan查看所有可用的命令。当我尝试运行php artisan migrate时,出现了一个连接错误:Php SQLSTATE[HY000][2002]在Laravel homestead内拒绝连接,php,laravel-5,migration,homestead,laravel-artisan,Php,Laravel 5,Migration,Homestead,Laravel Artisan,使用Mac OS X和Homestead 2.2.1以及Laravel 5.2 在终端中(在我的项目文件夹中的homestead中),我可以使用php artisan查看所有可用的命令。当我尝试运行php artisan migrate时,出现了一个连接错误: SQLSTATE[HY000][2002]连接被拒绝 我已经用这些.env设置设置了一个Laravel项目 DB_HOST=127.0.0.1 DB_DATABASE=tcv DB_USERNAME=homestead DB_PASSW
SQLSTATE[HY000][2002]连接被拒绝
我已经用这些.env设置设置了一个Laravel项目
DB_HOST=127.0.0.1
DB_DATABASE=tcv
DB_USERNAME=homestead
DB_PASSWORD=secret
我还尝试了localhost作为DB\u主机,root作为DB\u用户名和DB\u密码。把所有可能的变化放在一起
在Sequel Pro(数据库管理应用程序)中,我可以连接这些设置
Host 127.0.0.1
Username homestead
Password secret
Database tcv
Port 33060
但这个数据库显然是空的,因为我不能从终端迁移到它
据我所知,这是一个配置问题,因为我可以用Sequel Pro连接到它。但老实说,我根本不知道什么是设置错误
谢谢你的帮助
编辑由于某些原因,当我将项目移动到MAMP并运行php artisan migrate时,我收到了相同的
SQLSTATE[HY000][2002]连接被拒绝的错误。
现在我完全迷路了 问题
在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
。但是这个值(3306)
从未被读入config/database.php
所以,不要像我这样愚蠢,忘记检查database.php
文件
修复
只需在config/database.php中添加'port'=>env('DB_port',3306),
,并在.env中设置该值,如下所示DB_port=3306
这是一个简单的修复程序。您的mysql数据库已失去与服务器的连接。如果您正在运行本地服务器,请在终端中运行:
mysqld
这将重新连接您的数据库。然后(如果您使用的是自制软件)运行:
这将在登录时自动连接您的数据库。我遇到了这个问题。当连接Sequel Pro时,我需要使用33060
作为端口,但在.env文件中它必须是3306
。我在.env文件中有33060
。将其更改为3306
,并且它工作正常 有可能您的mysql
尚未启动或未连接到端口3306
我刚刚遇到这个问题,发现在.env文件中将其从127.0.0.1
更改为localhost
修复了它
DB_HOST=localhost
在我的例子中,这个错误是突然出现的。当我看到这个神秘的错误时,我意识到,我试图在vm之外运行这个命令…这是为任何有问题的人提供的另一个解决方案。我所有的设置都正确,但由于某些原因,我的更改没有更新。Laravel实际上缓存了配置文件(我觉得这完全是愚蠢的)
以下是更新配置后我的解决方案:
php-artisan-config:clear
如果您使用的是Homestead
,那么您应该使用默认的mysql端口运行它。因此,您应该在.env文件中使用DB_PORT=3306
,而不是使用DB_PORT=3306
。另外,记住在homestead安装中运行php artisan migrate
命令,一切都应该正常
希望能有所帮助。我也有同样的问题,试试这个
DB_HOST=localhost
如果您在mac OS上使用MAMP,请在mysql数据库配置文件中添加以下行
'unix_socket' => env('DB_SOCKET', ''),
'unix_socket'=>env('DB_socket',''),
并在.env文件中添加
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock使用localhost
而不是127.0.0.1
(在.env文件中),然后运行命令:
php artisan config:cache
对我来说,唯一解决这个问题的方法是将连接详细信息放在config/database.php中,而不是放在.env文件中。希望这有帮助在您将所有配置放在.env文件上之后,如果您已经运行了php artisan Service
,重新启动它我使用vagrant,但我在盒子外执行php artisan,因此基本上它没有权限我遇到了类似的问题,这里没有任何建议可以帮助我。
这就解决了我的问题,将应用程序名和数据库主机名设置为相同的值。在我的例子中,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
好的,看来主机不是问题,但实际上是端口
因此,它实际上是浏览器测试的端口,同时也是terminal和Sequel Pro的端口。它是否与将其添加到Homestead.yaml并设置在此处有关
在阅读与Laravel相关的设置时,会显示:
MySQL:33060→ 转发到3306我可能是因为您可能已经很久没有重新启动PHP artisan了
因此,在对数据库进行更改和配置后:clear Tinker可以正常工作
但要使浏览器引用新的数据库连接,需要重新运行
php工匠服务
从任务管理器终止sqld
从xampp控制面板停止MySQL并重新启动它
如果它仍然抛出相同的问题,请从根文件夹运行
php artisan cache:clear
php artisan config:cache
php artisan serve
如果您仍然存在问题,请检查您是否正在使用sql server的多个副本,例如通过Ubuntu应用程序,如果是,请停止Ubuntu中的MySQL服务器
sudo服务MySQL停止
对我来说,将凭证括在引号中起了作用
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE='zzz'
DB_USERNAME='yyy'
DB_PASSWORD='XXX'
我遇到
DB_CONNECTION=mysql
DB_HOST=localhost
DB_PORT=3306
DB_DATABASE='zzz'
DB_USERNAME='yyy'
DB_PASSWORD='XXX'
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=8080
DB_DATABASE=flap_safety
DB_USERNAME=root
DB_PASSWORD=mysql
'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'),
]) : [],
],
services:
db: <------ This is the name of the DB_HOST
container_name: admin_db
image:mysql:5.7.22
.
.
.