我正在尝试将postgresql
和pgadmin4
连接在一起。
pgadmin4
可以正常工作,但是当我尝试创建新服务器时遇到两个问题:
postgres
容器位于其他端口而不是5432,则无法识别该端口。它显示此错误:could not connect to server: Connection refused
Is the server running on host "172.17.0.5" and accepting
TCP/IP connections on port 5431?
postgres
容器位于端口5432,则错误为FATAL: password authentication failed for user "example"
。我执行此命令以获取postgres
容器:docker run -p 5431:5432 --name postgres2 -e POSTGRES_PASSWORD=ad1234 -d postgres
。
我尝试遵循stackoverflow中的其他响应,添加此命令-c"listen_addresses='*'"
,我也输入了配置文件,但对我而言没有这项工作。
希望您能帮助我,谢谢。
好的,我解决了,这对我来说是一个很大的失败。我正在使用172.17.0.5
(IP容器地址),而我需要使用的连接是172.17.01
(网关)。
谢谢您的时间。
答案 0 :(得分:0)
我以这种方式重现了您的情况:
# docker run -p 5431:5432 --name postgres2 -e POSTGRES_PASSWORD=ad1234 -d postgres
# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d4030c577a24 postgres "docker-entrypoint.s…" 2 minutes ago Up 2 minutes 0.0.0.0:5431->5432/tcp postgres2
# sudo -u postgres psql -h localhost -p 5431
could not change directory to "/root": Permission denied
Password:
psql (10.5, server 11.2 (Debian 11.2-1.pgdg90+1))
WARNING: psql major version 10, server major version 11.
Some psql features might not work.
Type "help" for help.
postgres=# CREATE DATABASE mytestdb;
CREATE DATABASE
postgres=# \q
现在为pgadmin启动docker并能够连接到postgresql:
docker run -p 80:80 --link postgres2 -e "PGADMIN_DEFAULT_EMAIL=user@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" -d dpage/pgadmin4
使用上述命令,您可以将postgres2泊坞窗链接到pgadmin泊坞窗,然后在pgadmin4上创建连接时,应使用:
那样,我已经从pgadmin4连接到Postgres
据我所知,docker PostgreSQL默认带有仅本地主机连接,如果要添加远程连接,则应在postgresql.conf中添加“ listen_addresses ='*'”