Docker-compose postgresql密码身份验证失败

时间:2019-04-11 12:51:31

标签: postgresql docker docker-compose

我正在尝试使用消耗Postgres数据库的Web服务进行安装。设置应该很简单,但出现错误。因此,我首先要确保的是我设置的数据库实际上已经存在并且正在运行。

要对此进行测试,我将“消费者”或“客户”替换为高山交互式外壳,如下所示:

version: '3'
services:

  db:
    image: postgres:10.1-alpine
    container_name: db
    expose:
      - 5432
    volumes:
      - "dbdata:/var/lib/postgresql/data"
    environment:
      - POSTGES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=db

  web:
    image: alpine:latest
    stdin_open: true
    tty: true
    entrypoint: /bin/sh
    depends_on:
      - db

volumes:
  dbdata:

然后我运行以下命令进入交互式外壳:

docker-compose run web

和以下命令进入数据库:

apk --update add postgresql-client && rm -rf /var/cache/apk/*

psql -h db -U user db

我从postgresql中得到了一个明确的拒绝:

psql: FATAL:  password authentication failed for user "user"

我尝试的每个用户名/密码/数据库名称组合都出现相同的错误消息。没有太大的帮助。

我在这里做什么错了?

1 个答案:

答案 0 :(得分:2)

您的docker-compose文件中有错字。您在这里拼错了POSTGRES

POSTGES_USER=user

这意味着未创建user用户。如果我纠正了错字,那么我可以:

version: '3'
services:

  db:
    image: postgres:10.1-alpine
    expose:
      - 5432
    volumes:
      - "dbdata:/var/lib/postgresql/data"
    environment:
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=pass
      - POSTGRES_DB=db

  web:
    image: alpine:latest
    stdin_open: true
    tty: true
    entrypoint: /bin/sh
    depends_on:
      - db

volumes:
  dbdata:

启动环境:

docker-compose up -d

附加到包含的web并安装postgresql客户端:

$ docker attach project_web_1
/ # apk add --update postgresql-client

然后我可以毫无问题地连接:

/ # psql -h db -U user db
Password for user user:
psql (11.2, server 10.1)
Type "help" for help.

db=#