无法连接到服务器:PgAdmin 4

50
我在新的Windows笔记本上安装了pgadmin,当我尝试创建一个新的服务器时,它显示:

输入图像描述

当我尝试在Pycharm中运行我的Django应用程序时,也出现了同样的错误

无法连接到服务器:连接被拒绝 (0x0000274D/10061) 服务器是否在主机“localhost”(127.0.0.1)上运行, 并且在端口5432上接受TCP/IP连接?

如何解决这个问题?


1
你是否配置了你的Postgres服务器以在本地主机上运行,端口为5432? - Stevy
你的机器上本地运行着Postgres服务器吗? - Matt Seymour
@MattSeymour 不,我在services.msc中检查了,但没有活动连接。 - Rahul Sharma
@Stevy 我该怎么做? - Rahul Sharma
如果您已正确安装,则默认端口为5432。如果一切正常,那么这个错误表明您的服务器未在本地运行。从SQL shell中运行您的服务器。然后pgAdmin将连接它。 - Bidhan Majhi
17个回答

54

如果有人在Docker中运行pgadmin-4,并且无法连接到postgres容器(就像我一样)。

解决方案是首先找到Docker镜像正在运行的IP地址。

步骤1,确保postgres容器正在运行。

步骤2,编写命令- PS C:\docker> docker ps 应该会得到以下或类似结果:

enter image description here

步骤3-为了找到运行postgres的IP地址,使用容器ID的一部分并像下面的命令一样进行分析:

PS C:\docker> docker inspect fc834 enter image description here 注意:这里我只使用了容器ID的一部分,即fc834..

这应该会得到以下或类似结果, 步骤4-

将此IP地址与正确的用户名和密码一起使用如下连接:

enter image description here enter image description here


我该如何做类似的事情,但是不使用在Docker容器中运行的Postgres实例? sudo netstat -plunt | grep postgres 返回我的Postgres正在0.0.0.0:5432上运行 即使我编辑了我的配置文件以允许连接,我也无法连接。 - Pfinnn
@Pfinnn,首先我没有尝试过那样做,所以我不能建议解决方案,但你是否尝试在主机字段中添加localhost或仅添加127.0.0.1? - Kjk
是的,我也尝试过那个了... 它仍然拒绝连接。我还配置了 UFW... 我已经没有更多的想法了... - Pfinnn
1
这个可行。但为什么我不能在主机字段中使用localhost? - amnesic
谢谢。它有效,但我可以问一下为什么本地主机不起作用,因为我们在创建容器时已经暴露了端口。 - undefined

28
你可能需要先安装PostgreSQL服务器。
您可以在以下文件夹中验证是否已创建文件夹: C:\Program Files\PostgreSQL(适用于Windows)或/etc/postgresql/{version}/main(适用于Linux / MacOS)。

1
解决了我的问题。 - Tim van Steenbergen

14

执行包含数据的容器,例如:

docker run --name postgresdb -e POSTGRES_USER=username -e POSTGRES_PASSWORD=password -e POSTGRES_DB=mydb -p 5432:5432 --restart always -d postgres

然后在PGAdmin客户端中,在"主机名/地址"中使用:

host.docker.internal

Image Conn PGAdmin


成功了!当我尝试在本地开发的Supabase上连接数据库时,它起作用了!localhost:54322 - Marosdee Uma

7
您可以配置您新创建的服务器在本地主机和5432端口上运行。
首先,在“创建服务器”窗口中选择“连接”选项卡。然后,按以下方式配置连接:
  • 在“主机名/地址”字段中输入服务器的IP地址。默认为localhost。

  • 将“端口”指定为“5432”。

  • 在“数据库维护”字段中输入数据库名称。

  • 将您的用户名输入为postgres,并输入密码(使用之前配置服务器以接受远程连接时使用的相同密码)。

  • 单击“保存”以应用配置。

注意: 您必须先在您的机器上安装PostgreSQL并运行它,或者使用Docker运行它。


4
我已经完成了这个动作,但是当我点击保存时,“无法连接到服务器”的提示窗口就会弹出。 - Rahul Sharma
你是否直接在计算机上启动了Postgres服务器或通过Docker启动了它?Pgadmin4是一个客户端,可连接到正在运行的Postgres服务器。 - Stevy

3

我曾经遇到同样的问题。但是在我的情况下,我安装了版本9的pgadmin,同时也安装了版本12。

当我卸载版本9时,端口已经被设置在版本12的配置中,并且没有释放。

所以我的解决方案是在postgresql.conf文件中更改版本12的端口。或者更简单地,在服务器创建过程中将端口从5432更改为5433。现在你可以再次创建服务器了。


更改端口有所帮助。谢谢! - Abhishek

3
在我的情况下,我同时运行了PgAdmin和PostgreSQL服务在不同的Docker容器中,并且我试图连接到本地主机(127.0.0.1),这就是无法连接到服务器错误的原因。

enter image description here

注意: 我的电脑(主机)上的5438端口映射到postgresql容器的5432端口。
因此实际上有两个解决方案(如果您将这些服务放在单独的容器中,并且已经将postgresql端口映射到主机):
1-找出你的本地IP地址(我的是192.168.1.106),并将它放在主机字段中。

enter image description here

2- 您可以将两个容器(pgadmin和postgres)放入一个网络(docker network)中,而不是使用本地IP,将postgres容器IP放入主机字段。
-另一个可能有用的提示是:我最近发现,如果您是Linux用户并启用了ufw,您应该允许该端口。
例如,在我的计算机上,postgresql运行在5438端口上,因此我执行了以下命令(这样我可以从pgadmin容器连接到postgresql正在运行的主机的5438端口):
ufw allow 5438

1

我正在使用Docker容器同时运行PostgreSQL和PGAdmin。

sudo docker ps

sudo docker inspect <postgress_container_id>

输出:

   "Networks": {
        "work_file_default": {
            "IPAMConfig": null,
            "Links": null,
            "Aliases": [
                "postgres",
                "578a7a1050d1"
            ],
            "NetworkID": "49dbe9d7280b55e36afc4308469c1b55e051d7eea8f1c03f08728e652cf22b5b",
            "EndpointID": "c30a642c5a0f2970147c9734cadfbe1e8d7c29fcba8a83a628b7c2b3db114716",
            "Gateway": "172.18.0.1",
            **"IPAddress": "172.18.0.4",**
            "IPPrefixLen": 16,
            "IPv6Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "MacAddress": "02:42:ac:12:00:04",
            "DriverOpts": null
        }

将上述命令获取的IP地址 (172.18.0.4) 替换为 localhost


这是对原问题的回答吗? - Giacomo Catenazzi

1

您需要从计算机中卸载Postgres和pgAdmin。然后安装Postgres,注意您可以选择与Postgres一起安装pgAdmin,因此不必单独下载pgAdmin。允许安装完成,然后重新启动计算机。希望您能够成功创建您的服务器/数据库。


1

如何在Ubuntu 22.04中解决此问题

  1. 我在Postgres中没有设置密码,这就是为什么出现错误“无法连接到服务器127.0.0.0端口5432”的原因。

  2. 在Ubuntu终端中输入以下命令:sudo -u postgres psql

  3. 运行以下语句以添加新密码:ALTER USER Postgres PASSWORD 'AddNewPasswordHere'; 在''中输入您的新密码

示例:

1) sudo -u postgres psql

2) ALTER USER postgres PASSWORD 'mynewpassword'

3) sudo service postgresql restart

4) 然后您可以在pgadmin中创建服务器


这对我有用。只是提醒一下:不要忘记将密码放在单引号中。否则,它将无法更新。 交易成功后,您将看到以下输出:ALTER ROLE - Avik

0
在“主机名/地址”字段中,不要使用“localhost”或“127.0.0.1”。 如果您使用的是Windows操作系统,请打开命令提示符(cmd),然后输入“ipconfig”。 使用无线局域网适配器Wi-Fi的IPv4地址,例如:192.168.0.13 而不是“localhost”或“127.0.0.1”。 这样应该可以正常工作。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接