Strongloop Heroku Postgres 设置 SSL 错误
Strongloop Heroku Postgres setup SSL error
我是 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/ ... Because I'm using StrongLoop rather than just straight Node.js, Heroku's documentation also left me lacking https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js。我很困惑我需要从这里做什么。
我有相当简单的新闻源类型 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)
根据您链接的文章,您需要修改 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"
}
环回的 PostgreSQL 文档提供了一些进一步的细节 - http://docs.strongloop.com/display/public/LB/PostgreSQL+connector - 但以上内容应该可以帮助您入门。
通过在命令行中设置以下环境变量,要求 Postgres 连接使用 SSL:
$ export PGSSLMODE=require
应该是“?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"
}
我自己 运行 遇到了类似的问题,我找到了这个解决方案来解决它。类似于@Lieblingsfarbe 的回答,但这是在 Heroku CLI 中。
进入 Heroku CLI -> 你的应用程序目录 -> 发出这个命令:
heroku config:set PGSSLMODE=require
参考:经过几个小时的尝试和研究后在这里找到它 ()
我尝试了以上所有选项,但在我的例子中,我使用了错误的 postgresql 驱动程序。
在检查了我的 postgresql 版本 10.4 之后,我不得不使用下面的 gradle 配置:
compile group: 'org.postgresql', name: 'postgresql', version: '42.2.5'
我是 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/ ... Because I'm using StrongLoop rather than just straight Node.js, Heroku's documentation also left me lacking https://devcenter.heroku.com/articles/heroku-postgresql#connecting-in-node-js。我很困惑我需要从这里做什么。
我有相当简单的新闻源类型 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)
根据您链接的文章,您需要修改 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"
}
环回的 PostgreSQL 文档提供了一些进一步的细节 - http://docs.strongloop.com/display/public/LB/PostgreSQL+connector - 但以上内容应该可以帮助您入门。
通过在命令行中设置以下环境变量,要求 Postgres 连接使用 SSL:
$ export PGSSLMODE=require
应该是“?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"
}
我自己 运行 遇到了类似的问题,我找到了这个解决方案来解决它。类似于@Lieblingsfarbe 的回答,但这是在 Heroku CLI 中。
进入 Heroku CLI -> 你的应用程序目录 -> 发出这个命令:
heroku config:set PGSSLMODE=require
参考:经过几个小时的尝试和研究后在这里找到它 ()
我尝试了以上所有选项,但在我的例子中,我使用了错误的 postgresql 驱动程序。
在检查了我的 postgresql 版本 10.4 之后,我不得不使用下面的 gradle 配置:
compile group: 'org.postgresql', name: 'postgresql', version: '42.2.5'