当前位置: 首页 > 知识库问答 >
问题:

postgresql和pgadmin docker容器的问题

宇文和同
2023-03-14

我正在尝试将PostgreSQLPGADMIN4连接在一起工作。pgadmin4工作正常,但当我尝试创建新服务器时,有两个问题:

  • 如果postgres容器位于不是5432的其他端口,则不会识别该端口。显示此错误:无法连接到服务器:连接拒绝是在主机“172.17.0.5”上运行并接受端口5431上的TCP/IP连接的服务器?
  • 如果Postgres容器位于端口5432处,则错误为致命:用户“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网关)。谢谢你抽出时间。

共有1个答案

费辰阳
2023-03-14

我这样再现了你情景:

# 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 docker链接到pgadmin docker,然后在pgadmin4上创建连接时,您应该使用:

    null

这样,我就从pgadmin4连接到了Postgres

据我所知,docker PostgreSQL默认只带有localhost连接,如果您想添加远程连接,则应该在Postgreql.conf中添加“listen_addresses='*'”

 类似资料:
  • 问题内容: 我在使用Hibernate和PostgreSQL进行生产以及使用HSQLDB进行测试时遇到问题。 我正在使用自上而下的方法让Hibernate创建数据库架构。 我也在使用注释;hibernate.cfg.xml的映射部分仅包含诸如 Hibernate默认值之类的行,以将PostgreSQL上的String变量转换为character changes(255),这在某些情况下对我来说是不

  • 问题内容: 我一直在关注几种不同的教程以及官方教程,但是每当我尝试在容器中安装PostgreSQL时,我都会收到以下消息 我在SO和整个互联网上浏览了几个问题,但是没有运气。 问题答案: 问题是您的应用程序/项目正在尝试访问HOST机器(不是docker容器)中的postgres套接字文件。 要解决这个问题,要么必须在使用该标志为postgres容器设置端口时明确要求进行tcp / ip连接,要么

  • 我一直在关注几个不同的教程以及官方教程,但是每当我试图在容器中安装PostgreSQL时,我都会收到以下消息 我在SO和整个互联网上看了几个问题,但没有运气。

  • 我在docker容器中的服务器上有Postgresql。如何从外部连接到它,即从本地计算机连接到它?我应该应用什么设置来允许它?

  • 连接到数据库 我在那里没有看到任何桌子,除了原木 我查看了日志,changelog已经在那里工作,并且已经创建了表。

  • 问题内容: 我已经安装了带有mysql的docker容器,该容器公开了3306。我已经指定了数据库用户,数据库密码并创建了一个测试数据库,并将特权授予了新用户。 在另一个容器中,我想访问此数据库。 因此,我用一个简单的PHP脚本设置了新容器,该脚本在此db中创建了新表。 我知道mysql容器的ip是172.17.0.2这样: 比起使用mysqli,我创建了新表,并且一切正常。 但是我认为使用他的I