从LAN访问PostgreSQL服务器

时间:2014-02-27 21:02:50

标签: postgresql postgresql-9.3

我一直在尝试编辑pg_hba.conf文件,以便能够仅使用IP地址访问服务器,到目前为止,没有成功。

例如,我可以使用«localhost»访问,但我想使用我的路由器给我的IP地址访问,如192.168.1.X

这是mi pg_hba.conf:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     postgres                                trust
#host    replication     postgres        127.0.0.1/32            trust
#host    replication     postgres        ::1/128                 trust
host all all 0.0.0.0/0 trust

任何帮助?

1 个答案:

答案 0 :(得分:31)

首先,编辑postgresql.conf文件,然后设置listen_addresses。 “localhost”的默认值只会侦听环回适配器。您可以将其更改为“*”,这意味着侦听所有地址,或者专门列出您希望它接受连接的接口的IP地址。请注意,这是接口已分配给它的IP地址,您可以使用ifconfigip addr命令查看。

您必须重新启动postgresql才能使listen_addresses的更改生效。

接下来,在pg_hba.conf中,您需要这样的条目:

# TYPE  DATABASE        USER            ADDRESS                 METHOD
host    {dbname}        {user}          192.168.1.0/24          md5

{dbname}是您允许访问的数据库名称。您可以为所有数据库添加“all”。

{user}是允许连接的用户。请注意,这是postgresql用户,不一定是unix用户。

ADDRESS部分是您要允许的网络地址和掩码。我指定的掩码将按照您的要求适用于192.168.1.x.

METHOD部分是要使用的身份验证方法。那里有很多选择。 md5表示它将使用md5哈希密码。您在样本中拥有的“信任”意味着根本不需要身份验证 - 绝对不建议这样做。

重新加载服务器后,对pg_hba.conf的更改将生效。您可以使用pg_ctl reload(或通过init脚本,取决于您的操作系统发行版)。