如何配置PostgreSQL以接受所有传入连接

162
我有一个PostgreSQL数据库,我想配置它接受所有来自任何源IP地址的连接。如何在pg_hba.conf文件中进行配置?我正在使用PostgreSQL 8.4版本。
6个回答

328

直接使用0.0.0.0/0

host    all             all             0.0.0.0/0            md5

确保 postgresql.conf 中的listen_addresses(或者通过ALTER SYSTEM SET)允许所有可用IP接口的传入连接。

listen_addresses = '*'

更改后,您需要重新加载配置。一种方法是以超级用户身份执行此 SELECT

SELECT pg_reload_conf();

注意:要更改listen_addresses,仅重新加载不足够,您必须重新启动服务器。


6
“trust” 允许所有用户连接而无需密码。这不是我会使用的,密码是您始终应该使用的最基本安全措施,即使在自己的计算机上也是如此。 - Frank Heikens
1
啊,我对问题的理解不同 -- 我以为他的意思是无条件地接受所有客户端的连接(可能是为了一些不重要的测试环境)。现在我明白你的意思了。 - Dan LaRocque
11
注意:如果您的网络使用IPv6,修改pg_hba.conf文件时需要使用::/0而不是0.0.0.0/0 - Aron Boyette
2
确保 postgres 有强密码:sudo -u postgres psql\password - Adobe
1
我要提到的是,如果你只在本地运行数据库,也就是说,数据库只能从本地机器访问,那么不设置密码既方便又安全,就像设置了最高级别的加密密码一样。如果有人已经获得了机器的访问权限,那么他们可以轻松地对任何想要修改的内容进行修改,然后授予自己访问数据库的权限。 - Mike
显示剩余2条评论

73

0.0.0.0/0表示所有IPv4地址

::0/0表示所有IPv6地址

all可以匹配任何IP地址

samehost可以匹配服务器自己的任何IP地址

samenet可以匹配服务器直接连接到的任何子网中的任何地址。

例如:

host    all             all             0.0.0.0/0            md5

还有MD5?我有一个想法,但可能需要包含它。 - blissweb
1
很棒,你也包含了一个IPv6的例子,谢谢! - Arthur Khazbs

9

8

在CentOS系统上配置Postgres 12的所有文件:

步骤1: 搜索并编辑文件

sudo vi /var/lib/pgsql/12/data/pg_hba.conf

按下"i"键,在IPv4行进行更改。

host    all             all             0.0.0.0/0            md5

步骤2:查找并编辑postgresql.conf文件

sudo vi /var/lib/pgsql/12/data/postgresql.conf

在最后一行添加:listen_addresses = '*' :wq!(保存文件)

步骤3:重新启动

systemctl restart postgresql-12.service


3

前往此位置的pg_hba.conf文件(/etc/postgresql/12/main),并在末尾添加以下行:

host  all  all 0.0.0.0/0 md5

它允许所有用户访问所有数据库。

通过输入此命令重启Postgresql

service postgresql restart

请查看错误详情获取更多信息。


-11
将此行添加到postgres文件夹中的pg_hba.conf文件中。
host    all    all    all    trust

“信任”允许所有用户无需密码连接。


你可以给代码加一些注释吗?在哪里放以及它是如何工作的? - Alistra
6
尽管这段代码片段很受欢迎,并且可能提供了一些帮助,但如果它包括解释 如何为什么 解决问题,它将会得到极大的改进。记住,您正在为未来的读者回答问题,而不仅仅是现在提问的人!请 [编辑] 您的答案以添加解释,并指出适用的限制和假设。 - Toby Speight
1
允许来自所有IP地址的连接真的很不安全。 - sandes

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