连接Enterprise DB遇psycopg2认证失败错误,求技术支持
解决pgpool连接Enterprise DB时的client authentication失败问题
嘿,我来帮你搞定这个认证报错的问题!你遇到的错误核心是pgpool的pool_hba.conf里没有匹配你客户端IP、用户和数据库的认证规则,具体报错信息如下:
psycopg2.OperationalError: FATAL: client authentication failed DETAIL: no pool_hba.conf entry for host "xxx.xx.xx.xxx", user "enterprisedb", database "enterprisedb", SSL off HINT: see pgpool log for details
你的连接代码是这样的:
import psycopg2 conn = psycopg2.connect(database="enterprisedb", user = "enterprisedb", password = "wifimsdp", host = "xx.xxx.xx.xxx", port = "5431")
而目前你的pool_hba.conf里只有本地Unix套接字的信任配置:
"local" is for Unix domain socket connections only
local all all trust
接下来给你几个解决步骤:
添加匹配远程IP的pool_hba规则
你需要在pool_hba.conf中新增一条针对你的客户端IP(也就是报错里的xxx.xx.xx.xxx)的认证规则,示例如下:host enterprisedb enterprisedb xxx.xx.xx.xxx/32 md5解释一下:
host表示允许TCP/IP连接- 第一个
enterprisedb是目标数据库名,第二个是用户名 xxx.xx.xx.xxx/32是你的客户端IP(/32代表单个IP,如果是整个网段可以用比如192.168.1.0/24)md5表示使用密码哈希认证,和你连接代码里提供密码的方式匹配
重启pgpool服务
修改完pool_hba.conf后,必须重启pgpool服务才能让新配置生效,否则规则不会被加载。检查端口与防火墙
确认pgpool确实在监听你代码里指定的5431端口,同时客户端到pgpool服务器的防火墙没有阻挡这个端口的TCP连接。可选:处理SSL设置
报错里提到SSL off,如果你的pgpool配置要求必须使用SSL连接,那你需要在连接代码中添加SSL参数,比如:conn = psycopg2.connect( database="enterprisedb", user="enterprisedb", password="wifimsdp", host="xx.xxx.xx.xxx", port="5431", sslmode='require' )不过优先解决
pool_hba.conf的规则问题,这是当前报错的核心原因。
内容的提问来源于stack exchange,提问作者Sayantan Indu
相关产品推荐
相关产品推荐

