Postgresql 我无法使用Heroku上的Strapi连接到Postgres DB
尝试在Heroku上使用Postgres部署Strapi,如下所述 但是我得到了这个错误Postgresql 我无法使用Heroku上的Strapi连接到Postgres DB,postgresql,heroku-postgres,strapi,Postgresql,Heroku Postgres,Strapi,尝试在Heroku上使用Postgres部署Strapi,如下所述 但是我得到了这个错误 error: no pg_hba.conf entry for host "84.212.51.43", user "ssqqeaz***", database "d6gtu***", SSL off 我使用Heroku Postgres附加组件 我的数据库配置: module.exports = ({ env }) => ({ defaultConnection: 'default',
error: no pg_hba.conf entry for host "84.212.51.43", user "ssqqeaz***", database "d6gtu***", SSL off
我使用Heroku Postgres附加组件
我的数据库配置:
module.exports = ({ env }) => ({
defaultConnection: 'default',
connections: {
default: {
connector: 'bookshelf',
settings: {
client: 'postgres',
host: env('DATABASE_HOST', '127.0.0.1'),
port: env.int('DATABASE_PORT', 27017),
database: env('DATABASE_NAME', 'strapi'),
username: env('DATABASE_USERNAME', ''),
password: env('DATABASE_PASSWORD', ''),
},
options: {
ssl: true
},
},
},
});
为什么??请帮忙 尝试将
ssl:true
更改为ssl:false
您发布的当前配置无法与Heroku Postgres数据库一起使用。这里的主要问题是,您正在从手动设置的配置变量中读取postgres数据库url的组件。Heroku强烈建议不要这样做,因为在发生灾难时,他们可能需要将数据库移动到新主机DATABASE_URL
是Heroku在应用程序上创建数据库时设置的,它是您可以依靠的一个配置变量来保持最新状态。继续
您需要从
database\u URL
config var中解析用户名、密码、主机、端口和数据库名称,并将它们提供给settings
块的属性。根据您提供的错误,我可以告诉您目前没有这样做,因为Heroku数据库用户名都以“u”开头,因此如果您收到错误user“ssqqeaz***”
,则会出现严重错误。作为第一步,您可以尝试在设置块中对这些值进行硬编码,以确保其正常工作(确保在执行此操作后旋转凭据,或者清理git历史记录以防止泄漏凭据)。postgres连接url的模式如下:postgres://$USERNAME:$PASSWORD@$HOSTNAME:$PORT/$DATABASE\u NAME
不确定它是否有助于移动配置
- 从选项密钥中删除ssl
- 在设置密钥内的密码后插入ssl
例如
ssl:env.bool('DATABASE_ssl',false),
这回答了你的问题吗?如何将?ssl=true添加到连接字符串。我试图更改Heroku UI上的数据库URL,但收到一条消息:无法更新项。我如何更新它?它没有帮助:(嗨,谢谢你的回答。我不明白我如何从数据库_URL提取用户名/密码等。strapi不应该为我做吗?第二件事是网站在本地工作,所以用户名从“ssqq***”开始是完全正确的。:-/Strapi应该为您这样做吗?是的,可能应该这样做,但看起来它没有。许多ORM对
DATABASE\u URL
具有一流的支持,并且能够动态解析组件(用户名、pword、主机等)并将其应用到配置中。不幸的是,您需要手动执行此操作。快速的谷歌搜索会显示npm软件包,您可能会从中获得灵感。关于用户名,您是否在Herkoku Postgres中使用Postgres凭据?因为所有默认凭据都以“u”开头。
module.exports = ({ env }) => ({
host: env('HOST', '0.0.0.0'),
port: env.int('PORT', 1337),
admin: {
auth: {
secret: env('ADMIN_JWT_SECRET', '**********************************'),
},
},
});