我對 Postgres 相當陌生,我正在嘗試通過 Auth0 的資料庫連接連接到托管在 Heroku 上的 PostgreSQL 資料庫。當我嘗試在 Auth0 的資料庫操作中呼叫“獲取用戶”腳本時出現錯誤。
錯誤:no pg_hba.conf entry for host "xx.xxx.xx.x", user "xxx", database "xxx", no encryption
腳本如下所示:
function loginByEmail(email, callback) {
const postgres = require('pg');
const conString = configuration.DATABASE_URL;
postgres.connect(conString, function (err, client, done) {
if (err) return callback(err);
const query = 'SELECT id, nickname, email FROM organizations WHERE email = $1';
client.query(query, [email], function (err, result) {
// NOTE: always call `done()` here to close
// the connection to the database
done();
if (err || result.rows.length === 0) return callback(err);
const user = result.rows[0];
return callback(null, {
user_id: user.id,
nickname: user.nickname,
email: user.email
});
});
});
}
configuration.DATABASE_URL:'postgres://xxx:xxx@xxx?sslmode=require'
我附加sslmode=require到我的連接字串的末尾,以確保我有一個到我的資料庫的 ssl 連接。
我也嘗試過更改sslmode=require為ssl=true哪個會導致不同的錯誤:自簽名證書
我不確定從這里去哪里,所以任何幫助將不勝感激。
uj5u.com熱心網友回復:
您應該首先建立client并指定rejectUnauthorized標志,如下所示:
const client = new postgres.Client({
connectionString: conString,
ssl: { sslmode: 'require', rejectUnauthorized: false }
});
然后,不要使用您postgres的連接,而是使用客戶端:
client.connect();
client.query(...);
這應該可以解決問題,并且您的連接將被加密。但是,您不會受到中間人 (MITM) 攻擊的保護:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/504856.html
標籤:PostgreSQL 授权0 heroku-postgres
上一篇:在SQL中重新格式化表
