如何从任何地方允许Postgresql连接?

时间:2016-06-03 09:57:28

标签: postgresql

我不懂pg_hba.conf文档。

似乎我可以添加此条目:

host    all    all                 md5

或此条目

host    all    all     *.*.*.*/*   md5

允许从任何地方进行访问。

但是,我不仅可以使用我的VirtualBox guest虚拟机IP 10.0.2.15连接到我的本地数据库,如果我没有

host    all   all     127.0.0.1/32  md5

然后即使使用0.0.0.0127.0.0.1

,我也无法再连接

我需要添加什么行以允许使用密码身份验证从任何IP(包括我的VirtualBox中的Docker容器)进行访问?

这是我当前的标准hb_pga.conf文件:

local   all             postgres                                peer
local   all             all                                     peer
host    all             all            127.0.0.1/32             md5
host    all             all             ::1/128                 md5

1 个答案:

答案 0 :(得分:3)

(以下所有内容均基于documentation for Postgres 9.5,但我不知道此语法有任何重大更改,因此它应该适用于最近含糊不清的任何内容。)

据我所知,该行

host    all    all                 md5

是无效的语法。使用host记录类型时,可以使用以下格式

host       database  user  address              auth-method  [auth-options]
host       database  user  IP-address  IP-mask  auth-method  [auth-options]

所以至少有四个额外的参数,而你只提供了三个。

根据你的评论,行

host    all    all 0.0.0.0/0 md5

将允许来自所有IP地址的连接(基于后续密码验证)。 /0是要验证的IP地址的位(字面上的位)的掩码。 /0表示您想忽略整个事情,即允许所有地址。掩码1.2.3.4/0意味着完全相同的东西。通常不允许从任何地方进行访问,但如果您正在处理面向非公共的VM或Docker容器,那么就可以了。

如果您使用的是IPv6连接,则语法非常相似:

host    all    all ::/0 md5

对于它的价值,我从未遇到过语法

host    all    all     *.*.*.*/*   md5