You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

从AKS连接Azure灵活PostgreSQL失败:pg_hba.conf错误排查

AKS连接Azure灵活PostgreSQL报no pg_hba.conf entry的问题分析

核心原因

这个错误说明PostgreSQL服务端的访问控制列表(pg_hba.conf)未授权AKS节点的公网IP以当前使用的连接方式访问数据库。Azure灵活PostgreSQL的pg_hba.conf由平台托管,无法直接修改,但可以通过Azure的配置项间接调整访问规则。

具体排查与解决步骤

  • 确认AKS节点公网IP已加入防火墙规则
    开启“允许所有Azure服务访问”仅放行Azure内部服务的默认IP段,AKS节点的出站公网IP可能不在此范围内。需要手动获取AKS节点的公网IP,添加到PostgreSQL的防火墙规则中:

    • 获取AKS节点所在资源组(通常以MC_开头):
      az aks show --resource-group <你的资源组名> --name <你的AKS集群名> --query "nodeResourceGroup" -o tsv
      
    • 获取节点公网IP:
      az vm list-ip-addresses --resource-group <上述MC开头的资源组名> --query "[].virtualMachine.network.publicIpAddresses[0].ipAddress" -o tsv
      
    • 将获取到的IP逐一添加到PostgreSQL服务器的“连接安全性”防火墙规则中。
  • 检查SSL连接配置
    Azure灵活PostgreSQL默认强制要求SSL连接,若AKS应用未启用SSL,即使防火墙放行,也会触发pg_hba.conf的拒绝规则:

    • 登录Azure门户,进入PostgreSQL服务器的“连接安全性”,确认“强制SSL连接”为“启用”状态。
    • 在应用的PostgreSQL连接字符串中添加sslmode=require参数,确保以SSL方式连接。
  • 验证认证方式匹配
    Azure托管PostgreSQL对外部IP默认使用md5密码认证,若应用使用了其他认证方式(如信任认证),会触发规则不匹配的错误。确保应用使用密码认证,且连接参数中的认证方式与数据库配置一致。

快速验证流程

  1. 手动添加AKS节点公网IP到防火墙规则,测试连接。
  2. 在连接字符串中强制启用SSL,重新发起请求。
  3. 若问题仍存在,检查PostgreSQL的“高级威胁保护”是否误拦截了AKS的连接请求。

内容的提问来源于stack exchange,提问作者Tobi Akinyemi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:31:51