我正在使用GeddyJs和heroku雪松应用程序部署。我正在为数据库使用Heroku Postgres服务。
我已经在geddyjs的配置文件中配置了用户名/密码/主机名/ dbname,但是当我去运行node app.js
时,它会抛出错误pg_hba.conf
我知道这与SSL不相关远程访问数据库时使用,但我不知道如何在连接上强制SSL ..
error: no pg_hba.conf entry for host "70.199.196.17", user "12345", database "database1", SSL off
at p.parseE (/Users/mikedevita/Web/Sites/gorelative.com/node/node_modules/pg/lib/connection.js:503:11)
at p.parseMessage (/Users/mikedevita/Web/Sites/gorelative.com/node/node_modules/pg/lib/connection.js:363:17)
at Socket.p.attachListeners (/Users/mikedevita/Web/Sites/gorelative.com/node/node_modules/pg/lib/connection.js:86:20)
at Socket.EventEmitter.emit (events.js:96:17)
at TCP.onread (net.js:397:14)
[Tue, 05 Mar 2013 22:39:49 GMT] ERROR Worker 843 died.
var config = {
detailedErrors: true
, debug: true
, hostname: 'localhost'
, port: 3000
, model: {
defaultAdapter: 'postgres'
}
, db: {
postgres: {
port: 5432
, password: 'foobar'
, database: 'database1'
, host: 'ec2-107-21-126-45.compute-1.amazonaws.com'
, user: '12345'
}
}
, sessions: {
store: 'memory'
, key: 'sid'
, expiry: 14 * 24 * 60 * 60
}
};
module.exports = config;
答案 0 :(得分:2)
您需要将ssl: true
添加到postgres配置中。
postgres: {
port: 5432
, password: 'foobar'
, database: 'database1'
, host: 'ec2-107-21-126-45.compute-1.amazonaws.com'
, user: '12345'
, ssl: true
}
Geddy只是将此配置对象传递给pg模块。查看pg.client wiki page了解详情。
答案 1 :(得分:-1)
如果您尝试从heroku外部进行连接,则需要使用SSL进行连接。如果使用SSL加密,我们只允许来自heroku外部的连接
error: no pg_hba.conf entry for host "70.199.196.17", user "12345", database "database1", SSL off
表示您无法关闭SSL。
您也可能使用database1清理数据库名称,但如果不是,我可以保证您的数据库名称实际上不是database1。
此外,您应 NOT NOT NOT 在文件中对您的凭据进行硬编码。从您的环境中读取它们。