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
相关产品推荐
相关产品推荐

