Laravel Sail:致命:用户“sail”的密码身份验证失败

Hea*_*ico 1 postgresql laravel docker laravel-sail

我使用 PostgreSQL 创建了一个 laravel sail 项目,然后尝试连接第 3 方软件(TablePlus 和 Navicat)上的服务器,我收到此错误消息

FATAL:  password authentication failed for user "sail"
Run Code Online (Sandbox Code Playgroud)

这是我的 docker-compose.yml

    pgsql:
        image: 'postgres:13'
        ports:
            - '${FORWARD_DB_PORT:-5432}:5432'
        environment:
            PGPASSWORD: '${DB_PASSWORD:-secret}'
            POSTGRES_DB: '${DB_DATABASE}'
            POSTGRES_USER: '${DB_USERNAME}'
            POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'
        volumes:
            - 'sailpgsql:/var/lib/postgresql/data'
        networks:
            - sail
        healthcheck:
          test: ["CMD", "pg_isready", "-q", "-d", "${DB_DATABASE}", "-U", "${DB_USERNAME}"]
          retries: 3
          timeout: 5s
Run Code Online (Sandbox Code Playgroud)

这是我的环境

DB_CONNECTION=pgsql
DB_HOST=pgsql
DB_PORT=5432
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
Run Code Online (Sandbox Code Playgroud)

这是全新安装,我没有做任何更改。它与 MySQL 一起使用,我错过了什么吗?谢谢..

Lau*_*ngs 7

从源代码控制克隆我的 Laravel Sail 项目后,我也遇到了这个问题。我发现错误的原因是我在将 DB_PASSWORD 添加到新的 .env 文件之前下载了 Sail 并启动了容器。尽管这被标记为已解决,但我还是会发布此内容,以防其他人遇到此问题的原因。

要修复该错误:

  1. 确保您的环境变量设置正确
  2. 重新创建包含数据库的 Docker 卷
sail down
docker volume ls
docker volume rm example-app_sailmysql
sail up -d
Run Code Online (Sandbox Code Playgroud)

^ 将“example-app_sailmysql”替换为您的 Docker 卷的名称

在弄清楚克隆 Laravel Sail 项目时的所有问题后,我制定了一个要点,其中包含要遵循的步骤。它还包含一个脚本,可以轻松安装 Composer 依赖项,以重新获得对 Sail 二进制文件的访问权限。

https://gist.github.com/LaurenceRawlings/3b4f801cafb2e683f45a3b573dad868d