Strongloop Heroku Postgres设置了SSL错误

时间:2015-07-15 05:42:38

标签: node.js postgresql ssl heroku strongloop

我是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)

5 个答案:

答案 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'