我是Node.js世界的新手,并使用StrongLoop设置了在Heroku(免费)上运行的应用程序。我设置了heroku postgresql插件(免费套餐),并尝试将数据源添加到StrongLoop的arc composer UI中。此UI更新server / datasources.json。当我尝试连接到我的数据源时,我收到此错误:
no pg_hba.conf entry for host "X.X.X.X", user "myUser", database "mydb", SSL off
我知道问题必须是在postgres上设置SSL。最接近的StrongLoop文档并未对此进行充分讨论:https://strongloop.com/strongblog/postgresql-node-js-apis-loopback-connector/ ...因为我使用的是StrongLoop而不仅仅是直接的Node.js,Heroku的文档也让我缺乏{{3} }}。我很困惑,我需要从这里做些什么。
我有一个相当简单的新闻源类型JSON数据,我用把手操纵。因此,如果它是免费套餐的问题,我可以通过我的设置向其他免费建议开放。感谢您的帮助。
编辑,datasources.json:
{"db":{"name":"db","connector":"memory"},
"mydb":{
"host":"myhost",
"port":####,
"url":"myamazonawsurl:####/mydbname",
"database":"mydbname",
"password":"mypw",
"name":"mydatasourcename",
"ssl":true,
"user":"myuser",
"connector":"postgresql"}}
更多错误详情:
error: no pg_hba.conf entry for host "X.X.X.X", user "myuser", database "mydb", SSL off at
Connection.parseE (c:\myroot\node_modules\loopback-connector-postgresql\node_modules\pg\lib\connection.js:539:11) at
Connection.parseMessage (c:\myroot\node_modules\loopback-connector-postgresql\node_modules\pg\lib\connection.js:366:17) at
Socket.<anonymous> (c:\myroot\node_modules\loopback-connector-postgresql\node_modules\pg\lib\connection.js:105:22) at
Socket.emit (events.js:107:17) at readableAddChunk (_stream_readable.js:163:16) at
Socket.Readable.push (_stream_readable.js:126:10)
答案 0 :(得分:5)
它应该是“?ssl = true”而不是“?sslmode = require”
"devpostgresql": {
"url": "postgres://user:password@ec2-54-228-226-93.eu-west-1.compute.amazonaws.com:5432/dbname?ssl=true",
"name": "devpostgresql",
"connector": "postgresql"
}
答案 1 :(得分:3)
根据您链接的文章,您需要修改datasources.json
配置以适合您的Heroku环境。
从heroku pg:credentials DATABASE_URL
获取您的详细信息,这些信息将在下面吐出(当然没有我使用的占位符!):
postgres://user:password@ec2-host.compute-1.amazonaws.com:5432/your-db-name
将其粘贴到datasources.json
:
"accountDB": {
"connector": "postgresql",
"url": "postgres://user:password@ec2-host.compute-1.amazonaws.com:5432/your-db-name?sslmode=require"
}
用于Loopback的PostgreSQL文档提供了一些进一步的细节 - http://docs.strongloop.com/display/public/LB/PostgreSQL+connector - 但上面的内容应该可以帮助你开始。
答案 2 :(得分:2)
通过在命令行中设置以下环境变量,为Postgres连接要求SSL:
$ export PGSSLMODE=require
答案 3 :(得分:1)
我自己遇到了类似的问题,我找到了解决方案来为我解决。与@Lieblingsfarbe的答案类似,但这是在Heroku CLI中。
进入Heroku CLI->您的应用程序目录->发出以下命令:
heroku config:set PGSSLMODE=require
参考:经过数小时的尝试和研究(https://stackoverflow.com/a/27732431/7430591)
在这里找到了它。答案 4 :(得分:0)
我尝试做所有上述选择,但就我而言,我为Postgresql使用了错误的驱动程序。
在检查我的Postgresql版本10.4之后,我不得不使用下面的gradle配置:
compile group: 'org.postgresql', name: 'postgresql', version: '42.2.5'