我在本地服务器(Ubuntu)上安装了PostgreSQL,IP为192.168.1.10。现在,我正在尝试使用IP 192.168.1.11和pgAdmin从我的客户机(Ubuntu)访问数据库。
我知道我必须在postgresql.conf和pg_hba.conf中进行更改以允许客户端连接。你能指导我吗?
答案 0 :(得分:108)
实际上是通过pgAdmin3远程连接到PostgreSQL服务器的3个步骤。
注意:我使用的是Ubuntu 11.04和PostgreSQL 8.4。
您必须使PostgreSQL侦听远程传入TCP连接,因为默认设置允许仅侦听环回接口上的连接。为了能够远程访问服务器,您必须将以下行添加到文件/etc/postgresql/8.4/main/postgresql.conf:
listen_addresses ='*'
PostgreSQL默认拒绝从任何远程地址收到的所有连接,您必须通过将此行添加到/etc/postgresql/8.4/main/pg_hba.conf:
托管所有0.0.0.0/0 md5
这是一个访问控制规则,任何人都可以从任何地址登录,如果他可以提供有效密码(md5关键字)。您可以使用所需的网络/掩码而不是0.0.0.0/0。
将这些修改应用于配置文件后,需要重新启动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实例的远程连接。 。方法如下:
答案 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)
检查防火墙。禁用它后,即可连接。如果您想要/不能禁用防火墙,请为您的远程连接添加一条规则。