23

我一直在尝试编辑 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

有什么帮助吗?

4

1 回答 1

55

首先,编辑 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} 是您允许访问的数据库名称。您可以为所有数据库添加“全部”。

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

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

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

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

于 2014-02-28T00:27:30.890 回答