我在我的本地服务器(Ubuntu)上安装了PostgreSQL,其IP地址为192.168.1.10。现在,我正在尝试使用pgAdmin从我的客户端机器(Ubuntu),即IP地址为192.168.1.11的机器中访问数据库。
我知道我必须更改postgresql.conf和pg_hba.conf以允许客户端连接。你能指导我如何操作吗?
我在我的本地服务器(Ubuntu)上安装了PostgreSQL,其IP地址为192.168.1.10。现在,我正在尝试使用pgAdmin从我的客户端机器(Ubuntu),即IP地址为192.168.1.11的机器中访问数据库。
我知道我必须更改postgresql.conf和pg_hba.conf以允许客户端连接。你能指导我如何操作吗?
注意:我使用的是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:
放宽这些规则:
host all all 0.0.0.0/0 md5
这是一个访问控制规则,如果用户可以提供有效的密码(md5关键字),则允许任何人从任何地址登录。 您可以使用所需的网络/掩码代替0.0.0.0/0。
当您将这些修改应用于配置文件后,您需要重新启动PostgreSQL服务器。现在,您可以使用用户名和密码远程登录到服务器。
sudo /etc/init.d/postgresql stop
和sudo /etc/init.d/postgresql start
。我通过谷歌搜索得到了这个信息,现在将它分享给那些不知道如何重启该服务的人们。 - ganesshkumar/var/lib/pgsql/9.4/data/pg_hba.conf
。 - Junior Mayhé0.0.0.0/0 md5
仅适用于IPv4。
为了启用IPv6访问,请添加以下行:
host all all ::0/0 md5
- raschildsudo /etc/init.d/postgresql status
命令来查看你启动或停止的服务的状态。 - Guru/etc/postgresql/8.4/main/postgresql.conf
中的 listen_addresses
设置。请尝试添加以下行:listen_addresses = *
以下设置将告诉PostgreSQL监听所有网络接口的连接。
如果未明确设置此项,其默认值为localhost
,这意味着它只会接受来自同一台计算机的连接。
在Linux终端中尝试以下操作:
sudo service postgresql start
:启动服务器sudo service postgresql stop
:停止服务器sudo service postgresql status
:检查服务器状态我不需要更改我的postgresql.conf文件,但是基于我的psql通过命令行连接而pgAdmin无法连接AWS上的RDS,我需要进行以下操作。
我确保我的RDS设置为公共访问。我确保我的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和安全组设置,但我无法使其正常工作。 不知道为什么,但那是另一天的事情。
通过SSH隧道连接到PostgreSQL
如果您不想将端口5432开放给任何流量,或者不想配置PostgreSQL以侦听任何远程流量,则可以使用SSH隧道来进行远程连接到PostgreSQL实例。以下是操作方法:
检查你的防火墙。当你禁用它时,你就可以连接了。如果你想/不能禁用防火墙,请为你的远程连接添加规则。
适用于Redhat Linux
sudo vi /var/lib/pgsql9/data/postgresql.conf
pgsql9是安装的PostgreSQL版本的文件夹,其他版本可能不同。
将 listen_addresses = ‘localhost’ 更改为 listen_addresses = '*' 然后
sudo /etc/init.d/postgresql stop
sudo /etc/init.d/postgresql start