在没有改变任何设置的情况下,我无法连接到Heroku上的PostgreSQL数据库。我不能在我的应用程序中访问它,并得到错误信息。
OperationalError: (psycopg2.OperationalError) FATAL: password authentication failed for user "<heroku user>" FATAL: no pg_hba.conf entry for host "<address>", user "<user>", database "<database>", SSL off
它说SSL是关闭的,但我已经在PgAdmin中确认启用了。当试图通过PgAdmin 4访问数据库时,我得到了同样的问题,说有一个致命的用户密码认证''错误。
我检查了Heroku上数据库的证书,但没有任何变化。我是否做错了什么?我是否需要在 pg_hba.conf
?
编辑: 我可以在Heroku的通知中看到,数据库在我的数据库停止工作的前后进行了更新。不过,我不确定是否是我触发了更新。
这里是通知中心。
一般情况下。当连接到Heroku Postgres时,对证书进行硬编码不是一个好主意。:
不要将数据库凭证复制和粘贴到一个单独的环境或您的应用程序的代码中。数据库URL是由Heroku管理的,在某些情况下会发生变化,例如:。
- 用户发起的数据库凭证旋转使用
heroku pg:credentials:rotate
.- 灾难性的硬件故障,需要Heroku Postgres工作人员在新硬件上恢复数据库。
- 安全问题或威胁,需要Heroku Postgres工作人员轮换数据库证书。
- 自动故障切换事件 房委会-启用的计划。
最好的做法是,当您的应用程序启动时,总是从相应的Heroku应用程序中获取数据库URL配置变量。例如,您可以遵循以下步骤 12因素应用配置原则 借助 Heroku CLI 并像这样调用你的进程。
DATABASE_URL=$(heroku config:get DATABASE_URL -a your-app) your_process
这样,你就能确保你的进程或应用程序 始终拥有正确的数据库凭证。
根据你截图中的消息,我怀疑你受到了第二条子弹的影响。不管是什么原因,其中一条消息明确表示
一旦完成,您的数据库URL将发生变化。