从LAN访问PostgreSQL服务器

Sim*_*oño 14 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
Run Code Online (Sandbox Code Playgroud)

有帮助吗?

har*_*mic 35

首先,编辑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
Run Code Online (Sandbox Code Playgroud)

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

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

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

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

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

  • 在 Debian/Ubuntu 中 `sudo service postgresql reload` 请参阅 https://dba.stackexchange.com/a/156722/215358 (3认同)
  • @CraigRinger 需要重新启动listen_addresses(手册说“此参数只能在服务器启动时设置。”)。正如我所说,可以通过重新加载更改 pg_hba。 (2认同)
  • 啊,我的坏。- 咖啡。 (2认同)
  • 重新启动 Homebrew 安装的 Postgres 的简单方法是:“brew services restart postgresql” (2认同)
  • 刚刚按照标准步骤安装了 Postgresql 13.3,listen_addresses 的默认值是“*”,而不是 localhost。 (2认同)