1

我正在使用 Sail 进行我的业余项目,并使用 Homestead 进行工作。我与端口 3306 发生冲突,因此我将 Sail 移至 3307,但现在由于某种原因我无法让 TablePlus 连接到数据库。为了清楚起见,该网站在浏览器中加载,并且sail tinkersail artisan:migrate可以正常工作,只是 TablePlus 无法正常工作?!上周末我使用它时它运行良好,但是在使用某些东西出现问题后,3306我决定将端口更改为3307 我已经运行docker-compose down -v以删除包括数据库在内的卷,并将其恢复,并且该站点在迁移,但仍然与 TP 无关。以下是我的.env

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=tall_events
DB_USERNAME=sail
DB_PASSWORD=password
FORWARD_DB_PORT=3307

还有我的docker-compose.yml文件:

mysql:
 image: "mysql:8.0"
 ports:
      - "${FORWARD_DB_PORT:-3307}:3307"
 environment:
 MYSQL_ROOT_PASSWORD: "${DB_PASSWORD}"
 MYSQL_DATABASE: "${DB_DATABASE}"
 MYSQL_USER: "${DB_USERNAME}"
 MYSQL_PASSWORD: "${DB_PASSWORD}"
 MYSQL_ALLOW_EMPTY_PASSWORD: "no"
 volumes:
      - "sailmysql:/var/lib/mysql"

3307它在 Docker 桌面 上显示为端口:在此处输入图像描述

但是当我尝试与 TablePlus 连接时,3307我得到以下信息: 在此处输入图像描述

当我尝试时,3306我得到 在此处输入图像描述

4

2 回答 2

0

在 TablePlus 中检查您的主机。

在您的 .env 文件中,DB_HOST 是“mysql”。TablePlus 中的主机看起来设置为“127.0.0.1”

另外,检查数据库名称。看起来它设置为“da”-something,当它应该是“tall_events”时

于 2021-05-08T12:52:14.247 回答
0

当您运行sail up -ddocker-compose 时,会创建一个虚拟网络。使用您现有的配置,mysql 仍在该虚拟网络上的端口 3306 上侦听,但在docker-compose.yml您将计算机上的端口 3307 映射到 mysql 容器上的 3307 时。

您需要做的是将您机器上的端口 3307 映射到 mysql 容器上的端口 3306。为此,您可以更新您docker-compose.yml喜欢的端口部分:

mysql:
 ports:
   - "3307:3306"

这意味着您可以localhost:3307使用 TablePlus 进行连接,但您的 Laravel 应用程序(在连接到虚拟网络的 docker 容器中运行)仍然可以连接到mysql:3306该虚拟网络。

于 2021-05-08T21:21:37.020 回答