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

Phoenix无法连接Heroku PostgreSQL服务器的问题求助

解决Postgrex连接失败:pg_hba.conf无对应条目错误

这个错误本质是PostgreSQL的访问控制配置文件pg_hba.conf里,没有允许你的外部IP(24.25.201.68)以用户koilqmnaakvfjg访问数据库dc245o0vlbprf7的规则,而且当前连接没启用SSL,刚好触发了PostgreSQL的安全限制。下面一步步解决:

1. 定位pg_hba.conf文件位置

先找到你的PostgreSQL配置文件路径,不同系统位置不同:

  • Ubuntu/Debian:/etc/postgresql/<你的PostgreSQL版本>/main/pg_hba.conf
  • macOS(Homebrew安装):/usr/local/var/postgres/pg_hba.conf
  • 通用查询方法:执行psql命令直接获取路径
    psql -U postgres -c 'SHOW hba_file;'
    

2. 添加允许连接的规则

打开pg_hba.conf,在文件末尾添加一行匹配你错误信息的规则:

host    dc245o0vlbprf7    koilqmnaakvfjg    24.25.201.68/32    scram-sha-256
  • host:表示允许TCP/IP连接
  • 第一个参数是你的目标数据库名dc245o0vlbprf7
  • 第二个是连接用的用户名koilqmnaakvfjg
  • 24.25.201.68/32:精确匹配你的外部IP(/32代表单个IP地址)
  • scram-sha-256:PostgreSQL 10+推荐的认证方式,若你的版本较低,替换成md5即可

3. 重启PostgreSQL服务

修改配置后必须重启服务才能生效:

  • Ubuntu/Debian:
    sudo systemctl restart postgresql
    
  • macOS(Homebrew):
    brew services restart postgresql
    

4. 检查Phoenix配置的SSL设置

如果你的数据库是云服务商提供的(比如Heroku、AWS RDS),通常默认强制要求SSL连接。打开config/dev.exs,确保补充ssl: true配置:

config :hello, Hello.Repo,
  adapter: Ecto.Adapters.Postgres,
  username: "koilqmnaakvfjg",
  password: "somepass",
  database: "dc245o0vlbprf7",
  hostname: "你的数据库主机地址", # 别遗漏这个关键配置!
  ssl: true,
  pool_size: 10

如果是本地数据库,不需要SSL的话可以保持ssl: false,但要确保pg_hba里的规则允许非SSL连接(上面的host规则默认支持非SSL,除非你额外添加了ssl required参数)。

做完这些后重新测试你的Phoenix应用,应该就能正常连接数据库了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 09:56:16