Laravel SQLSTATE[HY000] [2002] 连接被拒绝

Posted

技术标签:

【中文标题】Laravel SQLSTATE[HY000] [2002] 连接被拒绝【英文标题】:Laravel SQLSTATE[HY000] [2002] Connection refused 【发布时间】:2017-05-04 16:33:00 【问题描述】:

所以我想将我现有的 Laravel 项目部署到我的数字海洋 VPS 中 我使用了this tutorial,并成功上传了我的网站。

我的.env 文件是:

APP_ENV=local
APP_KEY=my app key
APP_DEBUG=true
APP_LOG_LEVEL=debug
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=my ip
DB_PORT=3306
DB_DATABASE=form
DB_USERNAME=root
DB_PASSWORD=my pass

但问题是:我使用 MySQL 并创建并运行

php artisan migrate

并得到这些错误:

[Illuminate\Database\QueryException] SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = form and table_name = migrations)

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

【问题讨论】:

您是否在.env 文件中定义了您的数据库凭据? 看这里laravel.io/forum/… @Froxz 看到它已经没有帮助,他的问题是关于宅基地 @SaumyaRastogi 是的,我附上了它 @MohammadReza 检查您的数据库/用户名/密码检查mysql是否正在运行Connection refused错误它无法连接,也许您的用户没有足够的访问权限等等。 【参考方案1】:

在您的 .env 文件中,将 DB_HOST127.0.0.1 更改为 localhost

【讨论】:

它不在我的本地主机中,除了我附加了我的 .env 文件 @Arsalan,您是否使用远程服务器来存储数据库?然后尝试使用域名而不是 IP。 这解决了我的问题。但我无法理解:127.0.0.1localhost 有什么区别吗? @GhulamAkbar 没有区别,除非数据库只接受来自localhost 的连接。例如。为了接受来自两者的连接,您必须创建 2 个用户,admin@localhostadmin@127.0.0.1 我看到人们提到相反的情况,这对我不起作用。迁移有效,但在尝试获取数据时无效。【参考方案2】:

输入字符串:

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

在 DB_PASSWORD=之后

它适用于 MAMP。将路径设置为 mysql.sock

【讨论】:

这对我有用。但我仍然不知道为什么它工作了这么久没有问题,然后现在它停止工作了。【参考方案3】:

在您的 .env 文件中,将 DB_HOST 从 127.0.0.1 更改为 localhost

然后

    php artisan 缓存:清除 php 工匠路线:清除 php 工匠配置:清除

    php 工匠视图:清除

    这对我有用。

【讨论】:

【参考方案4】:

您收到此错误的原因有多种。

数据库服务器没有启动,检查你是否仍然可以使用你的phpmyadmin。如果您仍然可以使用它,那么您的数据库服务器就没有问题。 错误的配置;检查 .env 文件和 config/database.php 中的用户名、密码和服务器设置 没有给定凭据的服务器和/或数据库权限 看看你已经采取的步骤,我认为这是最后一步。

检查此用户是否可以从远程位置访问数据库。默认情况下,root 用户可以在本地访问服务器(localhost、127.0.0.1 和 ::1)。

因此,请检查用户是否可以从您的远程 IP 或任何地方访问。

由于您使用的是 digitalocean,我建议您检查他们是否有特定的配置来连接到 mysql 数据库。

【讨论】:

【参考方案5】:

经过很长时间,这对我有用:

在 php My Admin 中更改端口以前 8889

APP_NAME=laravel
APP_ENV=local
APP_KEY= YOUR KEY
APP_DEBUG=true
APP_URL=127.0.0.1

LOG_CHANNEL=stack

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_SOCKET=/Applications/MAMP/tmp/mysql/mysql.sock

然后

php artisan cache:clear
php artisan route:clear
php artisan config:clear
php artisan view:clear

【讨论】:

【参考方案6】:

SELinux 可能是原因。

设置此规则并重试:

sudo setsebool -P httpd_can_network_connect_db=1

【讨论】:

【参考方案7】:

在您按照上述说明进行更改之前,

    检查您的数据库服务器是否正在运行。如果您使用command prompt,运行mysql.server status 或mysqld status 将显示数据库状态。 如果数据库正在运行,请检查dbuser 是否允许从'%''localhost''127.0.0.1' 连接。如果没有,只需授予来自'%' 的用户访问权限 如果您已经完成了 1 和 2 并且仍然无法连接,请查看是否允许 db 用户访问架构。如果没有,请授予对架构的访问权限 如果您到达此处但仍然遇到同样的错误,请尝试重新启动您的网络服务器。

【讨论】:

【参考方案8】:

我的作曲家是全局安装的,我在没有启动 xampp 的情况下运行 php artisan serve 并收到此错误。运行我的 xampp 服务器后,它在我这边运行良好。

【讨论】:

【参考方案9】:

为了尝试为那些在任何已经提到的答案中没有成功的人提供解决方案,我将分享我的解决方案。

来自 Windows 10,我了解到 root 用户的密码始终为空白,因此我的 .env 文件如下所示:

DB_USERNAME=root
DB_PASSWORD=

在 Mac 上,密码也默认为“root”。将我的 .env 文件更改为如下所示解决了我的问题:

DB_USERNAME=root
DB_PASSWORD=root

【讨论】:

【参考方案10】:

在您的 .env 文件中

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=ur_db_name
DB_USERNAME=ur_db_username
DB_PASSWORD=ur_dbuser_password

【讨论】:

【参考方案11】:

如果您在 Mac 上使用 XAMPP,只需使用 XAMPP 仪表板中的嵌入式 IP 地址作为 DB_HOST 而不是 127.0.0.1 或 localhost...

如果它仍然拒绝与用户建立联系,但坚持这个想法。

谢谢。

【讨论】:

以上是关于Laravel SQLSTATE[HY000] [2002] 连接被拒绝的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 7 SQLSTATE [HY000] [2002] 连接被拒绝

Laravel 6.0 迁移 - SQLSTATE[HY000] [2002] 没有这样的文件或目录

SQLSTATE[HY000] [2002] 连接被拒绝 Laravel 5.8.35

SQLSTATE[HY000]:一般错误:在 Laravel 中迁移期间出现 1005

PHP + MYSQL + Laravel - “SQLSTATE [HY000] [2002] 连接被拒绝” [重复]

SQLSTATE [HY000] Laravel 8 中的外键约束格式错误