我设置了一个 PostgreSQL 容器,可以使用 Adminer 成功连接到该容器,但在尝试使用相同凭据通过 DBeaver 等方式进行连接时,出现身份验证错误。
我尝试在 Dockerfile 中公开端口 5432,并且可以在 Windows 上看到 docker 端口已正确绑定。我猜测,因为这是一个身份验证错误,所以问题不是看不到服务器,而是使用用户名或密码?
Docker Compose 文件和 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
想知道我是否应该做其他事情来使其能够通过其他实用程序工作?
任何帮助都会很棒。
提前致谢。
Update:
尝试通过 postgresql 容器的 IP 172.28.0.3 访问数据库,但连接超时,这表明 PostgreSQL 正在正确侦听 0.0.0.0:5432,并且由于某种原因,即使从主机,用户和密码也无法在 Docker 外部使用使用本地主机的机器。
检查 Postgres 数据文件夹中的 pg_hba.conf 文件。
默认配置是您只能从本地主机登录(我假设管理员正在这样做),但不能从外部 IP 登录。
为了允许通过密码身份验证从所有外部地址进行访问,请将以下行添加到 pg_hba.conf 中:
host all all * md5
然后,您可以从外部连接到在 docker 容器中运行的 postgres 数据库,前提是您公开了端口 (5432)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)