Aller au contenu principal

Connexions dans DBeaver

Se connecter à Supabase avec un outil client

DBeaver splash screen

Notions théoriques

Pourquoi utiliser un client comme DBeaver ?

Supabase propose une interface web très complète, mais pour certaines opérations, il est plus pratique d’utiliser un client PostgreSQL externe comme DBeaver. Cet outil permet de :

  • gérer plusieurs connexions à différentes bases de données,
  • écrire et sauvegarder des requêtes SQL complexes,
  • inspecter les données et les schémas de manière ergonomique,
  • comparer des bases locales et distantes,
  • tester facilement les permissions et les rôles.
astuce

DBeaver est un client SQL open-source compatible avec PostgreSQL, MySQL, SQLite, Oracle, etc.


Informations nécessaires pour se connecter à Supabase

Pour établir une connexion entre DBeaver et une base Supabase, il faut récupérer les informations de connexion suivantes :

  • host : l’URL de la base PostgreSQL (fournie par Supabase),
  • port : généralement 5432 pour PostgreSQL,
  • nom de la base : visible dans l’interface Supabase (souvent postgres),
  • utilisateur : le nom d’utilisateur PostgreSQL (généralement postgres),
  • mot de passe : généré automatiquement à la création du projet,
  • SSL : doit être activé pour sécuriser la connexion.
attention

Ne jamais désactiver SSL pour une base distante. Cela rend les données vulnérables aux interceptions réseau.


Où trouver ces informations dans Supabase ?

  1. Aller dans le Dashboard Supabase.
  2. Cliquer sur [Settings] > [Database].
  3. Repérer les champs suivants :
    • Connection string (PostgreSQL)
    • DB password
    • Host
    • Port
    • Database

Organisation des connexions dans DBeaver

Dans le cadre de ce projet, il est pertinent de créer une connexion par rôle :

  • supabase_guest
  • supabase_student
  • supabase_teacher
  • supabase_admin
  • supabase_super-admin

Cela permet de tester facilement les permissions RLS en changeant simplement de connexion.


Sécuriser ses connexions

  • Toujours activer SSL dans les paramètres de connexion.
  • Ne pas stocker les mots de passe en clair dans les fichiers de configuration.
  • Utiliser un gestionnaire de mots de passe (ex : Bitwarden, KeePass) pour stocker les credentials.
  • Ne jamais partager les identifiants de connexion ou les tokens JWT.
info

DBeaver propose une option pour chiffrer localement les mots de passe enregistrés.


Bonnes pratiques de test avec DBeaver

  • Tester les requêtes SELECT, INSERT, UPDATE, DELETE selon le rôle.
  • Vérifier que les politiques RLS fonctionnent comme prévu.
  • Utiliser les onglets SQL pour documenter les tests.
  • Ne pas exécuter de requêtes destructrices sans backup.

Exemple pratique

Il est possible de configurer DBeaver pour se connecter à une base Supabase distante.

Étape 1 : installer DBeaver

Télécharger DBeaver Community depuis le site officiel :
👉 https://dbeaver.io/download/

Installer la version adaptée à votre système (Windows, macOS, Linux).


Étape 2 : créer une nouvelle connexion PostgreSQL

  1. Ouvrir DBeaver.
  2. Cliquer sur "Nouvelle connexion".
  3. Choisir PostgreSQL.
  4. Renseigner les champs de connexion :
    • Host : l’URL du projet Supabase (sans https://)
    • Port : 5432
    • Database : généralement postgres
    • Username : postgres
    • Password : celui fourni dans Supabase > Settings > Database

Étape 3 : activer SSL

  1. Aller dans l’onglet SSL.
  2. Cocher "Use SSL".
  3. Choisir "Require" comme mode SSL.
  4. Laisser les autres champs vides si vous n’avez pas de certificat spécifique.

Étape 4 : nommer la connexion

Donner un nom clair à la connexion, par exemple :

  • supabase_guest
  • supabase_student
  • supabase_teacher
  • supabase_admin
  • supabase_super-admin

Cela permet de tester les rôles plus facilement.


Étape 5 : tester la connexion

  1. Cliquer sur "Test Connection".
  2. Vérifier que tout fonctionne.
  3. Cliquer sur "Finish" pour enregistrer la connexion.

Étape 6 : exécuter une requête simple

  1. Ouvrir la connexion.
  2. Créer un nouvel éditeur SQL.
  3. Lancer une requête simple :
SELECT * FROM profiles;

Vérifier que les données visibles correspondent au rôle simulé.


Étape 7 : répéter pour chaque rôle

Créer une connexion par rôle, en changeant le JWT simulé ou le contexte d’exécution si votre Supabase le permet (via SET LOCAL jwt.claims.sub dans un éditeur SQL).


Test de mémorisation/compréhension


Quel est le port par défaut utilisé par PostgreSQL ?


Quel est l'intérêt de créer plusieurs connexions dans DBeaver ?


Quel champ ne fait PAS partie des informations de connexion à une base PostgreSQL ?


Pourquoi activer SSL dans DBeaver ?


Quelle option SSL faut-il choisir pour se connecter à Supabase ?


Quel outil est recommandé pour stocker les mots de passe de connexion ?


Quel est le nom d’utilisateur par défaut dans Supabase ?


Que permet un client comme DBeaver ?


Où trouver le mot de passe PostgreSQL dans Supabase ?


Pourquoi nommer les connexions selon les rôles ?



TP pour réfléchir et résoudre des problèmes

Objectif du TP

Configurer 5 connexions sécurisées dans DBeaver (une par rôle) à une base Supabase existante, tester les connexions, et valider l'accès aux données selon les rôles définis dans les étapes précédentes.

Étape 1 : Installer DBeaver Community

Télécharger la version gratuite de DBeaver adaptée à votre système d’exploitation (Windows, macOS, Linux) depuis :

👉 https://dbeaver.io/download/

Installer l'application.

Une solution

Étape 2 : Récupérer les informations de connexion dans Supabase

Se connecter à votre projet Supabase, puis :

  1. Aller dans l’onglet Settings > Database.
  2. Noter les informations suivantes :
    • Host (ex. db.abcd.supabase.co)
    • Port (par défaut : 5432)
    • Database (souvent postgres)
    • User (souvent postgres)
    • Password (visible dans le champ DB password)
Une solution

Étape 3 : Créer une connexion PostgreSQL dans DBeaver

  1. Ouvrir DBeaver.
  2. Cliquer sur Nouvelle connexion.
  3. Choisir PostgreSQL.
  4. Renseigner les champs :
    • Hôte : db.XXXXX.supabase.co
    • Port : 5432
    • Base de données : postgres
    • Utilisateur : postgres
    • Mot de passe : celui récupéré à l’étape précédente
  5. Cliquer sur Suivant.
Une solution

Étape 4 : Activer SSL dans les paramètres de connexion

  1. Dans la configuration de la connexion, aller dans l’onglet SSL.
  2. Cocher "Use SSL".
  3. Choisir le mode "Require".
  4. Laisser les autres champs vides.
  5. Cliquer sur Test de connexion.
  6. Si tout fonctionne, cliquer sur Terminer.
Une solution

Étape 5 : Renommer la connexion selon le rôle

Dans DBeaver :

  1. Clic droit sur la connexion > Renommer.
  2. Donner un nom explicite, par exemple : supabase_super-admin.
Une solution

Étape 6 : Dupliquer la connexion pour chaque rôle

Créer 5 connexions distinctes avec le même mot de passe et les mêmes paramètres, mais en changeant le nom de la connexion :

  • supabase_guest
  • supabase_student
  • supabase_teacher
  • supabase_admin
  • supabase_super-admin
Une solution

Étape 7 : Tester l’accès aux données avec chaque connexion

  1. Ouvrir une connexion (clic droit > Se connecter).
  2. Ouvrir un nouvel éditeur SQL.
  3. Lancer la requête :
SELECT * FROM profiles;
  1. Vérifier que les données affichées correspondent aux permissions du rôle simulé.
Une solution

Étape 8 : Documenter les résultats des tests

Créer un fichier texte ou Markdown pour noter :

  • Les rôles testés
  • Les requêtes exécutées
  • Les résultats obtenus
  • Les anomalies éventuelles
Une solution

Étape 9 : Sécuriser les mots de passe

  1. Ne pas stocker les mots de passe en clair dans un fichier texte.
  2. Utiliser un gestionnaire de mots de passe (ex : Bitwarden, KeePass).
  3. Dans DBeaver, activer le chiffrement local des mots de passe (option dans les préférences).
Une solution

Étape 10 : Vérifier que toutes les connexions sont fonctionnelles

  1. Tester chaque connexion avec un SELECT simple.
  2. Vérifier que la connexion s’établit sans erreur.
  3. Noter les éventuelles erreurs (mauvais mot de passe, SSL, etc.).
Une solution