【问题标题】:Can't workout why TablePlus refuses to connect to db with Sail 0n 3307无法锻炼为什么 TablePlus 拒绝使用 Sail 0n 3307 连接到数据库
【发布时间】:2021-07-30 10:31:18
【问题描述】:

我正在使用 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"

它在 Docker 桌面上显示为端口 3307

但是当我尝试在3307 上连接 TablePlus 时,我得到以下信息:

当我尝试 3306 我得到

【问题讨论】:

  • "${FORWARD_DB_PORT:-3307}:3307"内部端口应该是3306

标签: laravel docker laravel-sail


【解决方案1】:

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

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

mysql:
 ports:
   - "3307:3306"

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

【讨论】:

    【解决方案2】:

    在 TablePlus 中检查您的主机。

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

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

    【讨论】:

      猜你喜欢
      • 2021-04-11
      • 2021-04-21
      • 2022-09-27
      • 2021-06-11
      • 2021-04-10
      • 1970-01-01
      • 2012-03-12
      • 1970-01-01
      • 2021-08-23
      相关资源
      最近更新 更多