Aller au contenu

Connecter PostgreSQL

Datarelix se connecte à PostgreSQL via un service de requêtes en lecture seule. Toutes les requêtes sont validées et exécutées à l’intérieur de ce service — le modèle ne voit jamais les identifiants de connexion et n’exécute jamais de SQL brut sur votre base de données.

Prérequis

  • Un serveur PostgreSQL (toute version encore activement prise en charge — 13+).
  • Un rôle de base de données disposant de CONNECT sur la base et de USAGE + SELECT sur les schémas et tables que vous voulez analyser. Faites-en un rôle LOGIN qui n’est pas superutilisateur et ne dispose d’aucun privilège d’écriture.
  • Une accessibilité réseau depuis les IP de sortie de Datarelix vers votre serveur Postgres.

Modes d’authentification

Username & password

Authentification SQL standard par nom d’utilisateur et mot de passe de base de données. Le mot de passe est stocké chiffré ; tous les autres champs de connexion sont stockés en configuration simple.

Configuration — créer un rôle en lecture seule

Exécutez ce qui suit dans votre base de données (en tant que superutilisateur ou rôle disposant de CREATEROLE) :

CREATE USER datarelix_reader WITH PASSWORD 'choose-a-strong-password';
GRANT CONNECT ON DATABASE your_db TO datarelix_reader;
GRANT USAGE ON SCHEMA public TO datarelix_reader;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO datarelix_reader;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
GRANT SELECT ON TABLES TO datarelix_reader;

Remplacez your_db et public par vos véritables noms de base et de schéma. Voir la référence GRANT de PostgreSQL pour le modèle de privilèges complet.

Où trouver vos identifiants

ChampOù le trouver
HostVotre console cloud — AWS RDS : point de terminaison de l’instance ; GCP Cloud SQL : IP publique ou privée ; Azure Database for PostgreSQL : nom d’hôte du serveur (*.postgres.database.azure.com)
Port5432 par défaut ; visible dans le panneau d’informations de connexion de votre console cloud
DatabaseLe nom de la base — à lister avec \l dans psql
UsernameLe rôle que vous venez de créer
PasswordLe mot de passe défini dans CREATE USER

Ce qu’il faut saisir

Host: your-host.example.com
Port: 5432
Database: your_db
Username: datarelix_reader
Password: ••••••••
SSL mode: require
Allowed schema: public

Connection string

Collez une URL postgresql:// — la chaîne de connexion — au lieu de remplir chaque champ. Pratique quand votre fournisseur cloud vous en livre une toute faite.

Où trouver votre chaîne de connexion

  • AWS RDS — console RDS → votre instance de base → Connectivity & security → copiez le nom d’hôte du point de terminaison, puis composez : postgresql://datarelix_reader:password@endpoint:5432/dbname?sslmode=require
  • GCP Cloud SQL — Cloud SQL → votre instance → Overview → copiez l’IP publique ; ou utilisez le nom d’hôte du Cloud SQL Auth Proxy pour une connectivité privée
  • Azure Database for PostgreSQL — portail Azure → votre serveur → Connect → copiez les informations de connexion et remplacez le mot de passe par le vôtre
  • Supabase — Project settings → DatabaseConnection string → onglet URI
  • Neon — Dashboard → votre projet → Connection Details → copiez la chaîne de connexion

Ce qu’il faut saisir

postgresql://datarelix_reader:your-password@your-host.example.com:5432/your_db?sslmode=require

Poolers de connexions (mode transaction ou mode session)

Certains fournisseurs managés placent un pooler de connexions devant Postgres, et le mode a son importance :

  • Les poolers en mode session et les connexions directes se comportent comme un Postgres normal — utilisez ceux-là.
  • Les poolers en mode transaction ne prennent pas en charge les requêtes préparées, sur lesquelles s’appuie le service de requêtes en lecture seule. Une connexion passant par un tel pooler échoue avec des erreurs de requête préparée.

Détails par fournisseur :

  • Supabase — utilisez Direct connection ou Session pooler (port 5432). Évitez le Transaction pooler (port 6543). Notez que le nom d’utilisateur du pooler est postgres.<project-ref>, et non postgres. Voir les méthodes de connexion Supabase.
  • PgBouncer auto-hébergé — pointez Datarelix vers un port en mode session, pas en mode transaction.

Modes SSL

Le champ SSL mode (mode SSL) correspond aux modes SSL standard de libpq :

ModeSignification
disablePas de TLS. À proscrire sur des réseaux publics.
allow / preferTente TLS, bascule en clair si le serveur ne le prend pas en charge.
requireTLS obligatoire ; le certificat serveur n’est pas vérifié. Valeur par défaut. Protège de l’écoute passive, mais pas d’une attaque active de type MITM.
verify-caTLS + vérification que le certificat serveur remonte à une autorité de confiance.
verify-fullTLS + vérification du certificat et de la correspondance du nom d’hôte. Le plus strict. Recommandé pour un Postgres managé en production.

Sémantique de la portée

Le champ Allowed schema (schéma autorisé) limite l’introspection et les requêtes à un seul schéma. Valeur par défaut : public.

Pour analyser plusieurs schémas dans la même base, créez une connexion par schéma.

Découverte

Entièrement prise en charge. L’introspecteur interroge information_schema.tables, information_schema.columns et pg_catalog.pg_constraint pour faire remonter les clés primaires, les clés étrangères, la nullabilité, les valeurs par défaut et les types. La passe optionnelle d’enrichissement par LLM ajoute des descriptions et déduit les relations non déclarées à partir des conventions de nommage.

Limites

  • Aucune requête d’écriture ni DDL — le validateur rejette les modifications au niveau de l’arbre syntaxique.
  • Un seul schéma par connexion.
  • Un plafond de lignes est appliqué côté serveur — les requêtes sans LIMIT en reçoivent un automatiquement.

Dépannage

SymptômeCause probableSolution
Connection refusedPare-feu ou port incorrectVérifiez que psql -h host -p 5432 -U user db fonctionne depuis le même réseau.
password authentication failedMauvais identifiants ou méthode pg_hba.conf inadaptéeTestez d’abord avec psql ; vérifiez la méthode d’authentification attendue pour le rôle. Sur Azure, utilisez le nom d’utilisateur simple — Flexible Server n’a pas besoin du suffixe user@servername (il ne concernait que Single Server, retiré du service). Sur les poolers Supabase, le nom d’utilisateur est postgres.<project-ref>.
prepared statement ... already exists / does not existConnexion via un pooler en mode transactionUtilisez un pooler en mode session ou une connexion directe (Supabase : port 5432, pas 6543).
SSL connection requiredLe serveur impose TLS, le mode est disable/preferPassez le mode SSL à require ou plus strict.
relation does not existMauvais schémaRéglez Allowed schema sur le schéma propriétaire de la table ; \dn dans psql liste les schémas.
permission denied for table XLe rôle n’a pas SELECT sur la tableGRANT SELECT ON ALL TABLES IN SCHEMA X TO role, plus ALTER DEFAULT PRIVILEGES IN SCHEMA X GRANT SELECT ON TABLES TO role pour les tables à venir.