Cette page couvre les détails de connexion côté application pour PostgreSQL sur Stack Harbor PaaS. Pour les options d’hôte (CNAME, IP privée, IP publique) voir d’abord Chaînes de connexion base de données ; cette page se concentre sur le code pilote par langage et la configuration SSL.
Java (JDBC)
Utiliser le pilote JDBC officiel PostgreSQL :
String URL = "jdbc:postgresql://node{node_id}-{environment_name}.{domain}/{dbname}";
Connection conn = DriverManager.getConnection(URL, user, password);
Utiliser un pool de connexions (HikariCP, c3p0) en production plutôt qu’une nouvelle connexion par requête. Les connexions PostgreSQL sont lourdes — chacune ouvre un processus backend — donc le pooling compte encore plus que sur MySQL.
Pour l’encodage UTF-8, PostgreSQL stocke le texte dans l’encodage de la base (par défaut UTF-8) ; aucun flag pilote n’est en général nécessaire.
PHP
Avec libpq :
$conn = pg_connect("host=node{node_id}-{environment_name}.{domain} port=5432 dbname=postgres user=webadmin password={password}");
Ou via PDO :
$pdo = new PDO(
'pgsql:host=node{node_id}-{environment_name}.{domain};dbname={dbname}',
$user,
$password
);
La chaîne d’hôte ne doit pas inclure http:// — la base n’est pas un point HTTP.
Python (psycopg)
psycopg3 est le pilote courant ; psycopg2 fonctionne de la même façon à l’appel connect() :
import psycopg
conn = psycopg.connect(
host='node{node_id}-{environment_name}.{domain}',
user=user,
password=password,
dbname=dbname,
)
Pour une application asyncio :
import psycopg
async with await psycopg.AsyncConnection.connect(
host='node{node_id}-{environment_name}.{domain}',
user=user,
password=password,
dbname=dbname,
) as conn:
...
Node.js (pg)
Le pilote pg standard :
import pg from 'pg';
const client = new pg.Client({
host: 'node{node_id}-{environment_name}.{domain}',
user,
password,
database: dbname,
port: 5432,
});
await client.connect();
Pour des connexions en pool, utiliser pg.Pool — le pool réutilise les connexions et est le bon défaut pour toute application web.
Connexions sécurisées SSL
Pour les environnements où TLS entre l’application et la base est requis, installer le module Encryption in Transit sur le nœud base de données. Le module émet un certificat serveur et active TLS dans postgresql.conf.
Côté application :
- Java — ajouter
?ssl=true&sslmode=require(ouverify-fullpour la validation du cert) à l’URL JDBC. - PHP / libpq — ajouter
sslmode=requireà la chaîne de connexion. - Python (psycopg) — passer
sslmode='require'àconnect(). - Node.js (pg) — passer
ssl: { rejectUnauthorized: true, ca: <cert> }au constructeur du client.
Les niveaux sslmode — disable, allow, prefer, require, verify-ca, verify-full — sont ceux exposés par libpq. verify-full est le plus strict ; require accepte tout certificat serveur sans vérification.
Notes
- Pas de
localhost. Application et base sont sur des conteneurs distincts. Utiliser le CNAME, l’IP privée ou l’IP publique du nœud base de données. - Port par défaut. PostgreSQL écoute sur
5432par défaut. Les pilotes ci-dessus supposent ce port sauf surcharge. - Identifiants initiaux. La plateforme envoie le superutilisateur initial et le mot de passe par courriel à la création. Créer des utilisateurs applicatifs à privilèges moindres depuis pgAdmin ou via
CREATE ROLE.
Voir aussi
- Chaînes de connexion base de données — options d’hôte, encodage UTF-8, point ProxySQL en grappe.
- PostgreSQL — référence au niveau moteur.
- Hébergement base de données — aperçu opérationnel.