postgresql 和 pgadmin docker 容器的问题
Problem with postgresql and pgadmin docker containers
我正在尝试连接 postgresql
和 pgadmin4
一起工作。
pgadmin4
工作正常但是当我尝试创建一个新服务器时我遇到了 2 个问题:
- 如果
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
.
我尝试按照 Whosebug 中的其他响应添加此命令 -c"listen_addresses='*'"
并且我也在配置文件中输入,但这些对我来说都不起作用。
希望你能帮助我,谢谢。
编辑[已解决]
好的,我解决了,这是我的一个大失败。我正在使用 172.17.0.5
(IP 容器地址),我需要用来连接的是 172.17.01
(网关)。
谢谢你的时间。
我用这种方式重现了你的场景:
# 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
现在开始 docker pgadmin 并能够连接到 postgresql:
docker run -p 80:80 --link postgres2 -e "PGADMIN_DEFAULT_EMAIL=user@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" -d dpage/pgadmin4
使用上面的命令你可以link postgres2 docker 到 pgadmin docker 然后在 pgadmin4 上创建连接你应该使用:
- 主机name/address:postgres2
- 端口:5432
- 维护数据库:postgres
- 用户名:postgres
这样,我就从 pgadmin4
连接到了 Postgres
据我所知,docker PostgreSQL 默认只有本地主机连接,如果你想添加远程连接,你应该添加 "listen_addresses = '*'" 到 postgresql.conf
我正在尝试连接 postgresql
和 pgadmin4
一起工作。
pgadmin4
工作正常但是当我尝试创建一个新服务器时我遇到了 2 个问题:
- 如果
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
.
我尝试按照 Whosebug 中的其他响应添加此命令 -c"listen_addresses='*'"
并且我也在配置文件中输入,但这些对我来说都不起作用。
希望你能帮助我,谢谢。
编辑[已解决]
好的,我解决了,这是我的一个大失败。我正在使用 172.17.0.5
(IP 容器地址),我需要用来连接的是 172.17.01
(网关)。
谢谢你的时间。
我用这种方式重现了你的场景:
# 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
现在开始 docker pgadmin 并能够连接到 postgresql:
docker run -p 80:80 --link postgres2 -e "PGADMIN_DEFAULT_EMAIL=user@domain.com" -e "PGADMIN_DEFAULT_PASSWORD=SuperSecret" -d dpage/pgadmin4
使用上面的命令你可以link postgres2 docker 到 pgadmin docker 然后在 pgadmin4 上创建连接你应该使用:
- 主机name/address:postgres2
- 端口:5432
- 维护数据库:postgres
- 用户名:postgres
这样,我就从 pgadmin4
连接到了 Postgres据我所知,docker PostgreSQL 默认只有本地主机连接,如果你想添加远程连接,你应该添加 "listen_addresses = '*'" 到 postgresql.conf