我正在建立一个新的应用程序,在基于主机的身份验证方面遇到了一些问题。我知道有其他的帖子在那里(espec this one),但是我尝试的似乎都不起作用。
我的错误:no pg_hba.conf entry for host "::1", user "root", database "db_name_here", SSL off
我的pg_hba. conf文件看起来像:
# TYPE DATABASE USER ADDRESS METHOD
local all all peer map=usermap
local replication all peer map=usermap
hostssl all all all md5
host replication all all md5
我有一个笔记给自己从过去,我说以下工作:
host db_name_here root ::1 trust
但事实并非如此。
我甚至试过:
all all all all trust
甚至那个也不起作用,同样的错误。
我读过the postgresql docs,虽然它帮助解释了发生了什么,(并让我尝试hostnossl,但无济于事)我仍然得到同样的错误。
你看到我的错误了吗?
4条答案
按热度按时间j0pj023g1#
您的
pg_hba.conf
条目缺少网络掩码;一个普通的IP地址是一个语法错误。这个应该可以工作:不要将
trust
用于除测试以外的任何用途。一旦您可以使用trust
,请将其替换为真实的的身份验证方法,如scram-sha-256
。确保使用以下命令重装数据库
并检查日志文件中的错误(这很重要,因为不会加载语法错误的文件)。
另一种方法是在服务器端启用SSL并将其用于本地连接。
最快的连接方式是通过Unix套接字(如果您没有使用Windows或JDBC驱动程序),也许这是最好的方法。
rseugnpd2#
您是否尝试过像这样单独允许IPv6本地主机
7gs2gvoe3#
添加sslmode=必需;信任服务器证书=真;在您的连接字符串。它肯定会工作。
wsxa1bj14#
在我的例子中,DB托管在不同的服务器上,我们获得DB服务器的访问凭据,因此,在创建连接字符串时,我只需要使用
sslmode:require
,如下所示