无法连接到数据库 Laravel Sail

Fon*_*sVC 7 mysql laravel laravel-8 laravel-sail

我正在尝试创建一个简单的 laravel 项目,并且正在关注 laracast 以使用 Sail 设置该项目。该项目运行良好,我能够使用 vendor/bin/sail artisan migrate 进行迁移。

laracast的下一步是用tableplus连接数据库。但我无法通过这一步。我在 tableplus 中收到此错误: 在此处输入图片说明

这是我的 .env:

DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=csv
DB_USERNAME=root
DB_PASSWORD=
Run Code Online (Sandbox Code Playgroud)

我没有更改 docker-compose 文件中的任何设置,在 docker 桌面中我可以看到 mysql 在端口 3306 上运行并且没有设置密码。

知道如何解决此问题并连接到数据库吗?

编辑:发现问题。当我运行时brew services list,看到旧版本的 mysql 仍在运行。停止它,brew services stop mysql现在我可以连接

Ben*_*ing 15

我发现我必须删除我的 docker 卷,因为我的用户名/密码错误,可以通过以下方式完成:

  1. 删除卷sail down -v
  2. 然后再次备份sail up -d
  3. 重新缓存 .env 变量sail artisan config:cache
  4. 然后重新迁移数据库sail artisan migrate


Han*_*ans 10

我在 sail 之外的笔记本电脑上安装了 mysql,所以这对我有用(将其添加到 .env 后,您需要重新启动 sail,以便它可以在 docker 中生效):

.env: FORWARD_DB_PORT=3307

对于 TablePlus,您实际上只需要名称、主机、修改的端口和用户/密码(sail 默认为 root,无密码)。输入与 .env 相同的数据库名称:DB_DATABASE=

在此输入图像描述

如果您查看您的docker-compose.yml,您会看到默认设置为 3306 并且这会覆盖它(您无需在此处执行任何操作,仅供参考):

mysql:
    image: 'mysql:8.0'
    ports:
        - '${FORWARD_DB_PORT:-3306}:3306'
    environment:
        MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
        MYSQL_DATABASE: '${DB_DATABASE}'
    (...etc...)
Run Code Online (Sandbox Code Playgroud)


onl*_*mas 6

你应该定义

FORWARD_DB_PORT=3306
Run Code Online (Sandbox Code Playgroud)

在您的 .env 中,这将在该端口上公开 mysql 以进行开发连接。我建议不要在生产中公开这个端口。

https://github.com/laravel/sail/blob/1.x/stubs/docker-compose.yml#L34