php Laravel Sail数据库连接被拒绝错误

0ejtzxu1  于 2023-04-19  发布在  PHP
关注(0)|答案(7)|浏览(283)

我已经在laravel8中创建了一个新的laravel项目。我已经正确地设置了Sail安装,本地数据库连接的一切工作正常,但当我尝试使用sail连接我的数据库时,它给了我一个错误
SQLSTATE[HY000] [2002]连接拒绝(SQL:select * from information_schema.tables where table_schema = laravel8 and table_name = migrations and table_type = 'BASE TABLE')
我已经清除了我的配置和缓存文件。

vu8f3i0k

vu8f3i0k1#

我在研究同样的问题,发现了这个。
https://github.com/laravel/sail/blob/7457004969dd62fa727fbc596bb2accccb1409a5/src/SailServiceProvider.php#L31
代码显示了laravel sail -sail:install添加的artisan命令,该命令用服务名称覆盖您的.env文件主机变量。

我将DB_HOST127.0.0.1更改为mysql,它被修复了

  • 编辑以回答问题:*
  • Sail基于Docker,要在同一个Docker网络上的两个Docker容器之间建立连接,可以通过容器名称引用容器,Docker会为您处理解析。这就是为什么我们使用mysql而不是地址 *
0mkxixxg

0mkxixxg2#

在cmd上运行以下命令

docker network inspect bridge

你会得到类似的回应:

[
{
    "Name": "bridge",
    "Id": "695c284c7b184839edf97d48161922dfe6c4827d0db917c3278f5634af7e00e2",
    "Created": "2022-02-22T22:17:30.8583513Z",
    "Scope": "local",
    "Driver": "bridge",
    "EnableIPv6": false,
    "IPAM": {
        "Driver": "default",
        "Options": null,
        "Config": [
            {
                "Subnet": "172.17.0.0/16",
                "Gateway": "172.17.0.1"
            }
        ]
    },
    .....
}

]
复制“Gateway”IP地址,并在.env文件中替换为DB_HOST值。它将工作

shyt4zoc

shyt4zoc3#

如果你想在不同端口运行mysql,例如下面的3307

ports:
  - 3307:3306

你应该像这样将FORWARD_DB_PORT环境变量添加到.env文件中

DB_PORT=3306 // this is for container port
FORWARD_DB_PORT=3307 // this is for local port
vohkndzv

vohkndzv4#

将DB_USERNAME从sail更改为root对我来说很有效。我猜sail没有所需的权限。

DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=database
DB_USERNAME=root # changed from sail
DB_PASSWORD=password
z9gpfhce

z9gpfhce5#

在我的docker中创建第二个sail项目后,我遇到了同样的问题。它不接受(仍然不接受)sail用户名或密码,但我可以用root用户进入,这给了我上面给出的错误。我去了桌面Docker应用程序,点击运行容器,找到mysql部分并运行CLI,键入mysql,然后运行查询CREATE DATABASE yourdatabasename;迁移运行得很好。

rjzwgtxy

rjzwgtxy6#

也许您应该匹配.env.testing的环境变量,因为正如willpercey-gb所说,sail:install命令更新.env的环境变量,而不是. env. testing的环境变量。

kgqe7b3p

kgqe7b3p7#

首先,停止所有使用brew的服务,尤其是MySQL

brew services stop MySQL

在docker-yaml文件中:

laravel.test
   ports:
     - '70:80'
mysql:
   ports:
     - '3456:3306'

现在运行您的帆工匠迁移命令。
这个应该能解决你的问题

相关问题