繁体   English   中英

连接到 Postgres Docker 服务器 - 身份验证失败

[英]Connecting to Postgres Docker server - authentication failed

我有一个 PostgreSQL 容器设置,我可以使用 Adminer 成功连接,但是当我尝试使用相同的凭据通过 DBeaver 之类的东西进行连接时出现身份验证错误。

我已经尝试在 Dockerfile 中暴露端口 5432,并且可以在 Windows 上看到 docker 端口被正确绑定。 我猜是因为这是一个身份验证错误,问题不在于看不到服务器,而是使用用户名或密码?

Docker 编写文件和 Dockerfile 看起来像这样。

version: "3.7"

services:

  db:
    build: ./postgresql
    image: postgresql
    container_name: postgresql
    restart: always
    environment:
      - POSTGRES_DB=trac
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=1234
    ports:
      - 5432:5432

  adminer:
    image: adminer
    restart: always
    ports:
      - 8080:8080

  nginx:
    build: ./nginx
    image: nginx_db
    container_name: nginx_db
    restart: always
    ports:
      - "8004:8004"
      - "8005:8005"

Dockerfile:(Dockerfile 稍后将用于复制 ssl 证书和密钥)

FROM postgres:9.6

EXPOSE 5432

想知道我是否应该做其他事情来使它能够通过其他一些实用程序工作?

任何帮助都会很棒。

提前致谢。

更新:

Tried accessing the database through the IP of the postgresql container 172.28.0.3 but the connection times out which suggests that PostgreSQL is correctly listening on 0.0.0.0:5432 and for some reason the user and password are not usable outside of Docker even from the host使用本地主机的机器。

检查 Postgres 数据文件夹中的 pg_hba.conf 文件。 默认配置是您只能从本地主机(我假设管理员正在这样做)登录,但不能从外部 IP 登录。

为了允许从所有外部地址访问 vi 密码验证,将以下行添加到您的 pg_hba.conf 中:

host    all             all            *            md5

然后,您可以从外部连接到在 docker 容器中运行的 postgres 数据库,前提是您公开了端口 (5432)

使用命令docker container inspect ${container_number} ,这将告诉您哪些 IPaddress:ports 暴露在容器外部。

命令“docker container ls”将帮助识别“容器号”

更新我的默认 db_name 后,我还必须自己更新 docker-compose,方法是像 OP 那样显式公开端口

 db:
    image: postgres:13-alpine
    volumes:
      - dev-db-data:/var/lib/postgresql/data
    environment:
      - POSTGRES_DB=devdb
      - POSTGRES_USER=user
      - POSTGRES_PASSWORD=1234
    ports:
      - 5432:5432

但这里的关键是重新启动服务器:DBeaver 已连接到 localhost:5432 :)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM