Bases de données
PostgreSQL, MySQL et MariaDB dans Joppa : une base par projet, les extensions (pgvector, PostGIS…), les URL de connexion, TablePlus, l'import et l'export, les copies et les instantanés.
Joppa fait tourner un serveur par moteur sur un port fixe ; chaque projet y a sa propre base. C’est plus léger qu’un conteneur par projet, et vos outils se connectent toujours au même endroit.
PostgreSQL, MySQL et MariaDB sont dans la version gratuite, un serveur de chaque. Plusieurs serveurs d’un même moteur (deux PostgreSQL dans deux versions, par exemple) demandent Joppa Pro. Voir Licence et offres.
Créer une base
Sur la page du service, section Bases : + Nouvelle base. Donnez-lui un nom, choisissez le projet à connecter et, pour PostgreSQL, ses extensions.
En général vous n’avez même pas à le faire : brancher le service sur un projet dans l’onglet Environnement crée la base du projet si elle n’existe pas.
Le tableau des bases montre leur taille, leurs extensions et leur projet. Le menu de chaque base : Extensions…, Copier l’URL, Exporter…, Importer dans cette base…, Dupliquer…, Instantanés…, Supprimer….
Se connecter
| Moteur | URL |
|---|---|
| PostgreSQL | postgresql://postgres:[email protected]:5432/<base> |
| MySQL, MariaDB | mysql://root:[email protected]:3306/<base> |
Ce sont des identifiants de développement, sur un serveur qui n’écoute que sur votre machine.
TablePlus
Ouvrir dans TablePlus (sur le service ou sur une base) ouvre la connexion déjà nommée « Joppa · base » et marquée en vert comme environnement local.
Depuis le terminal
joppa dbs postgres # les bases et leurs URL
joppa dbs postgres --json # pour un script
Les extensions PostgreSQL
Installées sur le serveur
Certaines extensions demandent des fichiers sur le serveur. Choisissez-les dans Version, port et extensions… : Joppa construit une image locale de PostgreSQL qui les contient, au prochain démarrage (quelques minutes la première fois). Les bases existantes sont gardées.
| Extension | Usage |
|---|---|
pgvector (vector) |
Embeddings et recherche par similarité |
| PostGIS | Données géographiques |
| pgRouting | Calcul d’itinéraires (avec PostGIS) |
| HypoPG | Index hypothétiques |
| pg_partman | Partitionnement |
| pg_stat_statements | Statistiques des requêtes (préchargée) |
Toujours disponibles
pg_trgm, uuid-ossp, pgcrypto, citext, hstore, unaccent, fuzzystrmatch.
Par base
Extensions… sur une base les active ou les retire. Décocher une extension la supprime de la base avec ce qui en dépend (colonnes vector, géométries…).
Activées par défaut dans les nouvelles bases choisit celles qui sont pré-cochées à la création d’une base, et présentes dans les bases créées par un outil externe (une migration, createdb).
MySQL et MariaDB
MySQL est l’image officielle (versions LTS et innovation), MariaDB son fork communautaire, compatible avec les mêmes clients. Les deux utilisent le port 3306 par défaut : si vous faites tourner les deux, le second prend 3307.
Exporter une base
Exporter…, dans le menu d’une base, l’enregistre dans un fichier, à l’endroit choisi :
| Format | Contenu |
|---|---|
.sql.gz (proposé) |
SQL compressé avec gzip |
.sql |
SQL lisible |
.dump (PostgreSQL) |
L’archive de pg_dump -Fc, relue par pg_restore |
Le fichier ne contient ni propriétaires ni droits (pg_dump --no-owner --no-acl), ni CREATE DATABASE (mysqldump --single-transaction --routines --triggers --events) : il se recharge sous n’importe quel nom, ici ou ailleurs.
Importer un fichier
Importer…, au-dessus du tableau des bases, charge un fichier dans le serveur. Importer dans cette base…, dans le menu d’une base, fait de même en visant cette base. Joppa lit :

- un fichier
.sqlou.sql.gz, de PostgreSQL, MySQL ou MariaDB ; - une archive
.dumpde PostgreSQL (pg_dump -Fc) ; - l’export d’un serveur entier : celui de Exporter les bases (.sql)…, de
pg_dumpallou demysqldump --all-databases.
Avant de lancer quoi que ce soit, Joppa lit le fichier et montre :
- la base où il va, nommée d’après le fichier (
acme-2026-10-23.sql.gzdonneacme) et modifiable. Si elle existe, cochez Remplacer acme ou prenez le nom proposé (Importer sous acme_import) ; - pour l’export d’un serveur entier, les bases qu’il crée, et celles qui existent déjà et seront remplacées : cochez Remplacer ces bases ;
- les extensions PostgreSQL du fichier : disponible, à activer d’abord sur le serveur (dans Version, port et extensions…), ou non proposée par Joppa. Ce qui dépend d’une extension absente n’est pas chargé.
Pendant l’import, une barre suit la lecture du fichier. À la fin, Joppa résume les erreurs ignorées en route (un rôle inconnu, une extension absente). Si la restauration échoue, le message du client (psql, pg_restore, mysql) s’affiche et la base créée par l’import est retirée.
Joppa adapte le fichier en le lisant : il retire les OWNER TO et les DEFINER= qui nomment les comptes d’un autre serveur, remplace les collations utf8mb4_0900_* de MySQL 8 par utf8mb4_unicode_ci pour MariaDB, et laisse de côté, dans l’export d’un serveur entier, les bases système (mysql, sys…) et le compte de Joppa.
Dupliquer une base
Dupliquer… crée une copie sur le même serveur, avec ses tables, ses données et ses extensions (acme_copy par défaut). PostgreSQL copie les fichiers de la base (CREATE DATABASE … TEMPLATE) quand personne n’y est connecté, et passe sinon par un export et une restauration ; MySQL et MariaDB passent toujours par un export.
Instantanés
Avec Joppa Pro, Instantanés…, dans le menu d’une base, ouvre ses instantanés : des copies de la base gardées par Joppa, restaurées en un clic.

- Prendre un instantané, avec un nom si vous voulez (« avant la migration »).
- Restaurer… ramène la base à cet instantané. Ce qu’elle contenait est d’abord gardé dans un nouvel instantané, « Avant une restauration ».
- La corbeille supprime un instantané.
- Gardés par base : au-delà de ce nombre (10 par défaut), les plus anciens sont supprimés.
Instantanés automatiques
Avec Joppa Pro, Joppa prend un instantané avant chaque opération qui efface des données. S’il échoue, l’opération n’a pas lieu.
| Opération | Étiquette de l’instantané |
|---|---|
| Supprimer une base | Avant suppression |
| Importer un fichier qui remplace une base | Avant un import |
| Importer depuis Docker Compose en remplaçant une base | Avant un import Compose |
| Restaurer un instantané | Avant une restauration |
Les instantanés d’une base supprimée restent : ils apparaissent sous le tableau, dans Bases supprimées, et en restaurer un recrée la base.
Les instantanés sont dans le dossier snapshots/ de Joppa (voir Fichiers et dossiers) : un .dump (PostgreSQL) ou un .sql.gz (MySQL, MariaDB) par instantané, avec un .json qui le décrit. Sans Joppa Pro, la liste reste visible et ses instantanés peuvent être supprimés, mais pas pris ni restaurés.
Depuis le terminal
joppa db export postgres acme # ./acme-2026-10-23.sql.gz
joppa db export postgres acme ~/acme.dump # archive PostgreSQL
joppa db import postgres ~/acme.sql.gz --into acme_test
joppa db import postgres ~/acme.sql.gz --replace # remplace acme
joppa db clone postgres acme acme_feature
joppa db snapshot postgres acme --name "avant la migration"
joppa db snapshots postgres acme
joppa db restore postgres acme 20261023-142501
Voir La commande joppa.
Exporter les bases
Exporter les bases (.sql)…, dans le menu ⋯ d’un serveur PostgreSQL, MySQL ou MariaDB, enregistre toutes ses bases dans un seul fichier SQL (pg_dumpall, ou mysqldump --all-databases), à l’endroit choisi. Un serveur arrêté est démarré le temps de l’export, puis arrêté de nouveau.
L’export reste possible pour un serveur verrouillé par la version gratuite (voir Licence et offres) : vos données restent les vôtres. Pour remettre un tel fichier dans un serveur : Importer un fichier.