无法使用pgAdmin将PostgreSQL连接到远程数据库

时间:2009-08-17 09:45:50

标签: postgresql pgadmin

我在本地服务器(Ubuntu)上安装了PostgreSQL,IP为192.168.1.10。现在,我正在尝试使用IP 192.168.1.11和pgAdmin从我的客户机(Ubuntu)访问数据库。

我知道我必须在postgresql.conf和pg_hba.conf中进行更改以允许客户端连接。你能指导我吗?

7 个答案:

答案 0 :(得分:108)

实际上是通过pgAdmin3远程连接到PostgreSQL服务器的3个步骤。

  

注意:我使用的是Ubuntu 11.04和PostgreSQL 8.4。

  1. 您必须使PostgreSQL侦听远程传入TCP连接,因为默认设置允许仅侦听环回接口上的连接。为了能够远程访问服务器,您必须将以下行添加到文件/etc/postgresql/8.4/main/postgresql.conf:

    listen_addresses ='*'

  2. PostgreSQL默认拒绝从任何远程地址收到的所有连接,您必须通过将此行添加到/etc/postgresql/8.4/main/pg_hba.conf:

    来放宽这些规则

    托管所有0.0.0.0/0 md5

    这是一个访问控制规则,任何人都可以从任何地址登录,如果他可以提供有效密码(md5关键字)。您可以使用所需的网络/掩码而不是0.0.0.0/0。

  3. 将这些修改应用于配置文件后,需要重新启动PostgreSQL服务器。现在可以使用用户名和密码远程登录您的服务器。

答案 1 :(得分:8)

如果您使用的是PostgreSQL 8或更高版本,则可能需要修改listen_addresses中的/etc/postgresql/8.4/main/postgresql.conf设置。

尝试添加以下行:

listen_addresses = *

将告诉PostgreSQL监听所有网络接口上的连接。

如果未明确设置,此设置默认为localhost,这意味着它只接受来自同一台计算机的连接。

答案 2 :(得分:1)

我没有必要更改我的prostgresql.conf文件但是,我确实必须根据我的psql通过命令行连接并且pgAdmin不在RDS上与AWS连接来执行以下操作。

我确实将我的RDS设置为Publicly Accessible。我确保我的ACL和安全组都是公开的,但仍然存在问题,所以我做了以下事情: sudo find . -name *.conf 然后sudo nano ./data/pg_hba.conf 然后添加到pg_hba.conf文件host all all 0.0.0.0/0 md5中的指令顶部 并且pgAdmin自动登录了我。

这也适用于pg_hba.conf文件 host all all md5没有任何IP地址,这也适用于我的IP地址host all all <myip>/32 md5

作为旁注,我的RDS在我的默认VPC中。我的非默认VPC中有一个相同的RDS实例,我的默认VPC具有相同的安全组,ACL和安全组设置,我无法使其工作。不知道为什么,但是,那是另一天。

答案 3 :(得分:1)

在Linux终端中尝试以下操作:

  • sudo service postgresql start:启动服务器
  • sudo service postgresql stop:停止服务器
  • sudo service postgresql status:检查服务器状态

答案 4 :(得分:1)

通过SSH隧道连接到PostgreSQL

如果您不想为任何流量打开端口5432,或者您不想将PostgreSQL配置为侦听任何远程流量,则可以使用SSH隧道建立到PostgreSQL实例的远程连接。 。方法如下:

  1. 打开PuTTY。如果您已经设置了会话以连接到 加载EC2实例,但暂时不连接它。如果你 没有这样的会议,请参阅这篇文章。
  2. 转到“连接”>“ SSH”>“隧道”
  3. 在“源端口”字段中输入5433。
  4. 在“目标”字段中输入127.0.0.1:5432。
  5. 点击“添加”按钮。
  6. 返回会话,并保存您的会话,然后单击“打开”以 连接。
  7. 这将打开一个终端窗口。连接后,即可离开 那一个。
  8. 打开pgAdmin并添加连接。
  9. 在“主机”字段中输入localhost,在“端口”字段中输入5433。 指定连接的名称以及用户名和密码。 完成后,单击“确定”。

答案 5 :(得分:0)

对于redhat linux

sudo vi /var/lib/pgsql9/data/postgresql.conf 

pgsql9是安装的postgres版本的文件夹,可能与其他人不同

改变 listen_addresses ='*' 从 listen_addresses ='localhost' 然后

sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start

答案 6 :(得分:0)

检查防火墙。禁用它后,即可连接。如果您想要/不能禁用防火墙,请为您的远程连接添加一条规则。