PostgreSQL远程访问主机没有pg_hba.conf条目

时间:2018-12-12 15:29:03

标签: postgresql pg-hba.conf

我试图从两台服务器远程访问安装在IP A.A.A.A服务器上的postgresql。一个是IP A.A.A.A,其中安装了postgresql,另一个是IP B.B.B.B

我已经编辑了/etc/postgresql/10/main/pg_hba.conf并添加了以下几行

host my_db db_user B.B.B.B/32 md5
host my_db db_user A.A.A.A/32 md5

我还编辑了/etc/postgresql/10/main/postgresql.conf并将listen_addresses设置为'*',如下所示:

#---------------------------------------------------------------------    
---------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------

# - Connection Settings -

listen_addresses = '*'          # what IP address(es) to listen on;
                                    # comma-separated list of     addresses;
                                    # defaults to 'localhost'; use '*' for all
                                    # (change requires restart)
port = 5432                             # (change requires restart)
max_connections = 100                   # (change requires restart)

我还允许通过ufw中的端口5432进行连接

5432                       ALLOW       Anywhere                  
5432 (v6)                  ALLOW       Anywhere (v6)             

现在,如果im在服务器A(安装了postgres的服务器)中并且执行psql "postgresql://db_user:password@A.A.A.A:5432/my_db",则连接正常。但是,如果我从具有IP B.B.B.B的服务器上执行此操作,则会收到此错误:

psql: FATAL:  no pg_hba.conf entry for host "B.B.B.B", user "db_user", database "my_db", SSL on
FATAL:  no pg_hba.conf entry for host "B.B.B.B", user "db_user", database "my_db", SSL off

我真的不明白错误在哪里。 pg_hba.conf中的两个条目看起来相同,但是一个有效,而另一个无效。

1 个答案:

答案 0 :(得分:0)

我在Docker上的PostgreSQL实例遇到类似的问题。我花了几个小时弄清楚如何解决它。我分享我的经验,希望能帮助遇到同样问题的其他人。有两个pg_hba.conf文件,其路径如下:

  1. /var/lib/postgresql/data/pg_hba.conf
  2. /etc/postgresql/12/main/pg_hba.conf

我正在修改第一个,却不知道第二个。我使用了一个技巧来检查我是否正在处理正确的文件。我注释掉了文件的所有行,然后重新启动了PostgreSQL服务。然后我看到我仍然能够从Docker容器内部连接到PostgreSQL服务。然后,我寻找了另一个具有类似名称的文件,因此到达了第二个文件。我修改了/etc/postgresql/12/main/pg_hba.conf,通过运行service postgresql restart重新启动了PostgreSQL,并且更改生效。