使用pgbouncer连接Azure托管PostgreSQL报no pg_hba.conf entry错误如何解决?
这个报错并非pgbouncer产生,而是你对接的Azure托管PostgreSQL服务返回的,pgbouncer仅作为代理透传了该报错信息。
根因说明
Azure托管PostgreSQL默认强制客户端使用SSL连接,且服务端内置的pg_hba.conf默认会拒绝所有非SSL的连接请求,同时会校验请求来源IP是否在服务白名单内。你当前pgbouncer到上游Azure PostgreSQL的连接默认没有开启SSL,因此被上游库拦截返回了该报错。
解决步骤
- 修改pgbouncer配置文件
pgbouncer.ini,开启上游连接的SSL配置:找到参数server_tls_sslmode,将值设置为require;如果使用的是1.15版本之前的pgbouncer,对应参数名为server_ssl_mode,同样设置为require即可。 - 可选调整客户端连接SSL配置:如果仅本地使用pgbouncer代理,可将
client_tls_sslmode设置为prefer,不强制本地psql连接使用SSL。 - 执行命令
systemctl restart pgbouncer重启pgbouncer服务让配置生效。 - 若重启后仍然报错,确认Azure PostgreSQL后台的IP白名单已经添加了pgbouncer所在服务器的公网IP,也就是报错信息里的
x.x.x.x地址。
疑问澄清
pgbouncer本身不会读取、也不会依赖上游PostgreSQL的pg_hba.conf文件,你收到的报错完全是上游PostgreSQL服务的准入拦截返回,和pgbouncer本身的配置没有直接关联。
内容的提问来源于stack exchange,提问作者Aniket Maithani
相关产品推荐
相关产品推荐

