SSL pour connexion PostgreSQL nodejs
j'essaie de me connecter à mon Heroku PostgreSQL DB et j'obtiens toujours une erreur SSL. Quelqu'un a-t-il une idée sur la façon d'activer SSL dans la chaîne de connexion?
postgres://user:pass@host:port/database;
Été la chercher partout, mais il ne semble pas être un sujet très populaire. En passant, je suis en cours d'exécution de Nodejs et le nœud-pg module avec sa connexion collectifs-méthode:
pg.connect(connString, function(err, client, done) {
/// Should work.
});
Commentaires sont très appréciés.
3 réponses
Vous pouvez le faire comme ceci:
postgres://user:pass@host:port/database?ssl=true
Vous pouvez également utiliser ce code ci-dessous lorsque vous créez un nouveau Client à partir de node-postgres:
var pg = require("pg");
var client = new pg.Client({
user: "yourUser",
password: "yourPass",
database: "yourDatabase",
port: 5432,
host: "host.com",
ssl: true
});
client.connect();
var query = client.query('CREATE TABLE people(id SERIAL PRIMARY KEY, name VARCHAR(100) not null)');
query.on('row', function(row) {
console.log(row.name);
});
query.on('end', client.end.bind(client));
espérons que cela aide!
avec Google Cloud PG et pg-promesse j'avais le même besoin.
L'erreur que j'ai eu (à l'aide de ?ssl=true
)connection requires a valid client certificate
.
la connexion SSL n'est pas documentée pour pg-promise
mais il est construit sur node-postgres. Comme expliqué dans le lien, le ssl
le paramètre de configuration peut être plus que true
:
const pgp = require('pg-promise')();
const fs = require('fs');
const connectionConf = {
host: 'myhost.com',
port: 5432,
database: 'specific_db_name',
user: 'my_App_user',
password: 'aSecretePass',
ssl: {
rejectUnauthorized : false,
ca : fs.readFileSync("server-ca.pem").toString(),
key : fs.readFileSync("client-key.pem").toString(),
cert : fs.readFileSync("client-cert.pem").toString(),
}
};
const new_db = pgp(connectionConf);
new_db.any('SELECT * FROM interesting_table_a LIMIT 10')
.then(res => {console.log(res);})
.catch(err => {console.error(err);})
.then(() => {new_db.$pool.end()});