🔝 Retour au Sommaire
- Introduction
- Pourquoi Utiliser la Ligne de Commande ?
- Prérequis
- Environnement Shell
- Organisation de cette Annexe
- Conventions et Notations
- Premiers Pas
- Sécurité et Bonnes Pratiques
Cette annexe est un guide pratique et complet des outils en ligne de commande (CLI - Command Line Interface) et des scripts shell pour administrer, surveiller et automatiser PostgreSQL.
Ce que vous apprendrez :
- Utiliser les outils PostgreSQL essentiels (pg_ctl, pg_dump, pg_restore, psql)
- Créer des scripts de backup automatisés et fiables
- Monitorer votre système PostgreSQL (métriques, performance, santé)
- Automatiser les tâches répétitives
- Gérer PostgreSQL en production avec confiance
Ce que cette annexe n'est PAS :
- ❌ Un cours sur le langage SQL (voir chapitres principaux)
- ❌ Un guide d'installation de PostgreSQL
- ❌ Un tutoriel de programmation Bash avancée (nous restons pragmatiques)
Profils ciblés :
- Développeurs qui souhaitent comprendre l'administration de base
- DevOps/SRE qui doivent gérer PostgreSQL en production
- Administrateurs système découvrant PostgreSQL
- Data Engineers nécessitant automatisation et monitoring
Niveau de compétence :
- Débutant : Vous découvrez la ligne de commande Linux
- Intermédiaire : Vous êtes à l'aise avec le terminal
- Avancé : Vous voulez optimiser et automatiser
"Apprendre par la pratique, comprendre par l'explication"
Cette annexe suit une approche progressive et pédagogique :
- Comprendre : Pourquoi cette commande/script existe
- Observer : Voir des exemples concrets
- Expliquer : Décortiquer chaque élément
- Appliquer : Scripts prêts à l'emploi
- Adapter : Personnaliser pour vos besoins
Exemple de progression :
Script minimal (5 lignes)
↓
Script simple avec vérifications (20 lignes)
↓
Script robuste avec logs (50 lignes)
↓
Script production-ready (150+ lignes)
Interfaces graphiques (pgAdmin, DBeaver, etc.) :
- ✅ Faciles pour débuter
- ✅ Visuelles et intuitives
- ✅ Bonnes pour l'exploration
Mais :
- ❌ Difficiles à automatiser
- ❌ Lentes pour tâches répétitives
- ❌ Non scriptables
- ❌ Dépendent d'un environnement graphique
- ❌ Consomment plus de ressources
Ligne de commande :
- ✅ Automatisation complète
- ✅ Scripts réutilisables
- ✅ Rapide et efficace
- ✅ Fonctionne en SSH distant
- ✅ Essentielle en production
- ✅ Facilite l'intégration CI/CD
Scénario 1 : Backup Quotidien
❌ Avec interface graphique :
1. Ouvrir pgAdmin
2. Clic droit → Backup
3. Choisir le format
4. Sélectionner le chemin
5. Clic "Backup"
6. Attendre la fin
7. Répéter tous les jours... 😫
✅ Avec ligne de commande :
# backup.sh
pg_dump -F c mabase -f backup_$(date +%Y%m%d).dump
# Dans crontab : exécution automatique à 2h
0 2 * * * /usr/local/bin/backup.shRésultat : Backup automatique tous les jours, sans intervention humaine !
Scénario 2 : Monitoring de 10 Serveurs
❌ Avec interface graphique :
Se connecter à chaque serveur
Ouvrir pgAdmin
Vérifier manuellement
Prendre des notes
Répéter pour les 9 autres serveurs... 😫
Temps estimé : 2 heures
✅ Avec ligne de commande :
# monitor_all.sh
for server in server{1..10}; do
ssh $server "psql -c 'SELECT COUNT(*) FROM pg_stat_activity;'"
done
# Temps estimé : 10 secondesScénario 3 : Restauration d'Urgence à 3h du Matin
❌ Avec interface graphique :
Réveillé en panique
Chercher le laptop
Lancer l'interface graphique
Chercher le bon bouton...
Stress maximum ! 😱
✅ Avec ligne de commande :
# Depuis smartphone via SSH
ssh production
./restore_latest.sh
# 30 secondes, retour au lit 😴| Critère | Interface Graphique | Ligne de Commande |
|---|---|---|
| Automatisation | ❌ Impossible | ✅ Totale |
| Rapidité | 🐌 Lent | ⚡ Instantané |
| Reproductibilité | ❌ Erreurs humaines | ✅ Scripts fiables |
| Monitoring | ❌ Manuel | ✅ Continu |
| Documentation | 📝 À rédiger | ✅ Scripts = doc |
| CI/CD | ❌ Incompatible | ✅ Intégration native |
| SSH Distant | ❌ Complexe | ✅ Simple |
| Logs | ❌ Manuels | ✅ Automatiques |
| Alertes | ❌ Manuelles | ✅ Automatiques |
En production, la ligne de commande n'est pas optionnelle, elle est ESSENTIELLE.
Indispensable :
- ✅ Bases du système Linux/Unix
- ✅ Navigation dans les répertoires (
cd,ls,pwd) - ✅ Utilisation basique de l'éditeur de texte (nano, vim, ou autre)
- ✅ Compréhension du concept de processus
Recommandé :
- ⭐ Notions de shell scripting (Bash)
- ⭐ Concept de variables d'environnement
- ⭐ Redirections (
>,>>,2>&1) - ⭐ Pipes (
|)
Pas nécessaire (on vous l'expliquera) :
- ❌ Expertise en scripting Bash
- ❌ Connaissance approfondie de Linux
- ❌ Administration système avancée
Système d'exploitation :
- Linux (Ubuntu, Debian, CentOS, RHEL)
- macOS (compatible)
- Windows avec WSL2 (Windows Subsystem for Linux)
PostgreSQL :
- Version 18 (septembre 2025) - exemples de cette annexe
- Compatible avec versions 12-17 (syntaxe similaire)
Outils nécessaires :
# Vérifier PostgreSQL
psql --version
pg_dump --version
# Vérifier Bash
bash --version
# Outils système recommandés
which cron
which mail # Pour alertes email
which bc # Calculatrice en ligne de commande Accès requis :
- ✅ Compte utilisateur avec accès PostgreSQL
- ✅ Accès SSH au serveur (si distant)
- ✅ Droits d'écriture dans
/usr/local/bin(ou équivalent) - ✅ Possibilité d'éditer le crontab
Si PostgreSQL est déjà installé, tous les outils CLI sont présents :
# Localisation typique
/usr/bin/pg_* # Debian/Ubuntu
/usr/pgsql-18/bin/pg_* # CentOS/RHEL
/usr/local/bin/pg_* # Installation depuis source
# Lister tous les outils PostgreSQL
ls -l /usr/bin/pg_* 2>/dev/null || ls -l /usr/pgsql-*/bin/pg_*Outils principaux disponibles :
pg_ctl # Contrôle du serveur
pg_dump # Backup logique
pg_dumpall # Backup complet (toutes les bases)
pg_restore # Restauration
psql # Client interactif
pg_isready # Test de connexion
pg_basebackup # Backup physique
createdb # Créer une base
dropdb # Supprimer une base
createuser # Créer un utilisateur
...et bien d'autres
Le shell est l'interpréteur de commandes qui exécute vos instructions et scripts. Sous Linux/Unix, plusieurs shells existent, mais Bash (Bourne Again Shell) est le plus répandu.
Analogie : Le shell est comme un traducteur entre vous et le système d'exploitation. Vous lui parlez en "commandes" et il traduit en actions système.
# Quel shell utilisez-vous ?
echo $SHELL
# Résultats possibles :
# /bin/bash → Bash (le plus courant)
# /bin/zsh → Zsh (macOS par défaut)
# /bin/sh → Shell standard (lien vers bash généralement)
# Version de Bash
bash --version💡 Note : Tous les scripts de cette annexe sont écrits pour Bash, mais fonctionnent généralement aussi en Zsh.
Variables PostgreSQL :
# PGDATA : Répertoire de données PostgreSQL
export PGDATA=/var/lib/postgresql/data
# PGHOST : Hôte PostgreSQL
export PGHOST=localhost
# PGPORT : Port PostgreSQL
export PGPORT=5432
# PGUSER : Utilisateur par défaut
export PGUSER=postgres
# PGDATABASE : Base de données par défaut
export PGDATABASE=postgres
# Afficher les variables
echo "PGDATA=$PGDATA"
env | grep ^PG Pourquoi c'est important ?
Avec ces variables définies, vos commandes deviennent plus simples :
# Sans variables
pg_dump -h localhost -p 5432 -U postgres -d mabase > backup.sql
# Avec variables (si PGHOST, PGPORT, PGUSER définis)
pg_dump mabase > backup.sqlConfiguration permanente :
# Ajouter dans ~/.bashrc ou ~/.bash_profile
echo 'export PGDATA=/var/lib/postgresql/data' >> ~/.bashrc
echo 'export PGHOST=localhost' >> ~/.bashrc
echo 'export PGPORT=5432' >> ~/.bashrc
echo 'export PGUSER=postgres' >> ~/.bashrc
# Recharger la configuration
source ~/.bashrcLe fichier .pgpass permet d'éviter de saisir les mots de passe en ligne de commande (essentiel pour l'automatisation).
Format :
hostname:port:database:username:password
Création :
# Créer le fichier
cat > ~/.pgpass << EOF
localhost:5432:*:postgres:monmotdepasse
production.example.com:5432:*:admin:autremotdepasse
EOF
# IMPORTANT : Sécuriser les permissions (obligatoire)
chmod 600 ~/.pgpass
# Vérifier
ls -l ~/.pgpass
# Doit afficher : -rw------- (lecture/écriture pour le propriétaire uniquement)Utilisation :
# Sans .pgpass (demande le mot de passe)
psql -U postgres -d mabase
# Avec .pgpass (connexion automatique)
psql -U postgres -d mabase
# Pas de prompt de mot de passe ! ✅.pgpass.
Anatomie d'un script Bash pour PostgreSQL :
#!/bin/bash
# ==========================================
# Script : mon_script.sh
# Description : Ce que fait le script
# Auteur : Votre nom
# Date : 2025-11-21
# ==========================================
# 1. Configuration (variables)
DATABASE="mabase"
BACKUP_DIR="/var/backups/postgresql"
LOG_FILE="/var/log/mon_script.log"
# 2. Fonctions (code réutilisable)
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
check_postgres() {
if ! pg_isready -d "$DATABASE" > /dev/null 2>&1; then
log "❌ PostgreSQL non accessible"
exit 1
fi
}
# 3. Script principal
log "=== Démarrage du script ==="
check_postgres
# Votre logique ici
log "Traitement en cours..."
# Code de retour
log "=== Script terminé avec succès ==="
exit 0 Éléments clés :
- Shebang (
#!/bin/bash) : Indique quel interpréteur utiliser - Commentaires : Documenter le script
- Variables : Configuration centralisée
- Fonctions : Réutilisation du code
- Logs : Traçabilité
- Codes de retour :
exit 0(succès),exit 1(erreur)
Cette annexe est organisée en trois parties principales :
Fichier dédié : postgresql_outils_shell.md
Contenu :
-
pg_ctl : Gestion du serveur PostgreSQL
- Démarrage, arrêt, redémarrage
- Modes d'arrêt (smart, fast, immediate)
- Rechargement de configuration
- Gestion du statut
-
pg_dump : Sauvegarde logique
- Formats de sortie (plain, custom, directory, tar)
- Options essentielles
- Backup sélectif
- Parallélisme
-
pg_restore : Restauration de sauvegardes
- Restauration complète et sélective
- Restauration parallèle
- Gestion des erreurs
- Optimisation
Public : Débutant à Intermédiaire
Durée estimée : 2-3 heures de lecture
Fichier dédié : postgresql_scripts_backup_automatises.md
Contenu :
- Stratégies de backup : Fréquence, rétention, règle 3-2-1
- Scripts de base : Du minimal au robuste
- Scripts avancés : Production-ready avec configuration
- Automatisation avec Cron : Planification et surveillance
- Rotation des backups : Gestion de l'historique (GFS)
- Destinations multiples : Local, NAS, Cloud (S3)
- Monitoring et alertes : Détection des problèmes
- Scripts de vérification : Tests de restauration
Public : Intermédiaire à Avancé
Durée estimée : 3-4 heures de lecture
Fichier dédié : postgresql_scripts_monitoring_systeme.md
Contenu :
- Introduction au monitoring : Concepts, métriques, observabilité
- Métriques système : CPU, RAM, disque, réseau
- Métriques PostgreSQL : Connexions, requêtes, cache, transactions
- Scripts de monitoring : Santé, performance, ressources
- Alertes et seuils : Gestion des anomalies
- Tableaux de bord : Rapports HTML, dashboards
- Intégration : Prometheus, Grafana, Slack
- Bonnes pratiques : Méthodologie, architecture recommandée
Public : Intermédiaire à Avancé
Durée estimée : 4-5 heures de lecture
Débutant
│
├─→ 1. Lire cette introduction
│
├─→ 2. Maîtriser pg_ctl, pg_dump, pg_restore
│ (Fichier : postgresql_outils_shell.md)
│ • Pratiquer les commandes manuellement
│ • Faire quelques backups/restores
│
├─→ 3. Créer des scripts de backup simples
│ (Fichier : postgresql_scripts_backup_automatises.md)
│ • Commencer par scripts minimaux
│ • Ajouter progressivement fonctionnalités
│ • Automatiser avec cron
│
└─→ 4. Mettre en place le monitoring
(Fichier : postgresql_scripts_monitoring_systeme.md)
• Scripts de santé de base
• Alertes simples
• Dashboard HTML
Intermédiaire/Avancé
│
├─→ Scripts de backup production
│ • Configuration centralisée
│ • Destinations multiples (NAS, S3)
│ • Rotation GFS
│ • Tests automatiques
│
└─→ Monitoring complet
• Métriques système et PostgreSQL
• Historique et tendances
• Intégration Prometheus/Grafana
• Alertes intelligentes
Dans cette annexe, nous utilisons :
# Commentaire explicatif
commande --option argument
# ✅ Indique une bonne pratique
# ❌ Indique une mauvaise pratique
# ⚠️ Indique un avertissement
# 💡 Indique un conseil/astuceVariables :
$VARIABLE: Variable shellCONSTANTE: Valeur fixe en majuscules
Chemins :
/chemin/absolu/fichier.txt: Chemin complet depuis la racinechemin/relatif/fichier.txt: Chemin relatif au répertoire actuel~/.fichier: Fichier dans le répertoire home de l'utilisateur
$ commande # $ = Prompt utilisateur normal
# commande # # = Prompt root (administrateur)
[user@host]$ # Prompt avec utilisateur et machine
# Résultat attendu
Sortie de la commande
# Commentaire explicatif dans le codeEn Bash, chaque commande retourne un code :
# 0 = Succès
# 1-255 = Erreur
# Vérifier le code de retour de la dernière commande
echo $?
# Exemple
pg_dump mabase > backup.sql
if [ $? -eq 0 ]; then
echo "✅ Backup réussi"
else
echo "❌ Backup échoué"
fiChaque script est marqué par un niveau :
- 🟢 DÉBUTANT : Script simple, peu de lignes, concepts de base
- 🟡 INTERMÉDIAIRE : Script avec gestion d'erreurs, fonctions
- 🔴 AVANCÉ : Script complet, production-ready, optimisé
Chaque section est marquée :
- ⭐ ESSENTIEL : À lire absolument
- ⭐⭐ IMPORTANT : Recommandé fortement
- ⭐⭐⭐ AVANCÉ : Pour aller plus loin
Créons ensemble un script très simple :
# 1. Créer le fichier
nano ~/mon_premier_script.sh
# 2. Copier ce contenu
#!/bin/bash
# Mon premier script PostgreSQL
echo "=== Premier Script PostgreSQL ==="
echo "Date : $(date)"
echo ""
# Vérifier PostgreSQL
if pg_isready > /dev/null 2>&1; then
echo "✅ PostgreSQL est actif"
else
echo "❌ PostgreSQL est arrêté"
fi
# Lister les bases de données
echo ""
echo "Bases de données disponibles :"
psql -l
echo ""
echo "=== Script terminé ==="
# 3. Sauvegarder et quitter (Ctrl+X, Y, Enter dans nano)
# 4. Rendre exécutable
chmod +x ~/mon_premier_script.sh
# 5. Exécuter
~/mon_premier_script.shRésultat attendu :
=== Premier Script PostgreSQL ===
Date : 2025-11-21 14:30:00
✅ PostgreSQL est actif
Bases de données disponibles :
Name | Owner | Encoding | ...
-----------+----------+----------+-----
postgres | postgres | UTF8 | ...
mabase | postgres | UTF8 | ...
=== Script terminé ===
Bravo ! Vous venez d'écrire votre premier script PostgreSQL ! 🎉
Script pour tester la connexion à PostgreSQL :
#!/bin/bash
# test_connection.sh
DATABASE="postgres"
echo "Test de connexion à PostgreSQL..."
# Méthode 1 : pg_isready
if pg_isready -d "$DATABASE" > /dev/null 2>&1; then
echo "✅ Connexion possible"
else
echo "❌ Connexion impossible"
exit 1
fi
# Méthode 2 : Requête SQL simple
RESULT=$(psql -d "$DATABASE" -t -c "SELECT 1;" 2>/dev/null | xargs)
if [ "$RESULT" = "1" ]; then
echo "✅ Requête SQL exécutée avec succès"
else
echo "❌ Impossible d'exécuter une requête"
exit 1
fi
# Informations
VERSION=$(psql -d "$DATABASE" -t -c "SELECT version();" | head -1 | xargs)
echo ""
echo "Version : $VERSION"
DATABASES=$(psql -d "$DATABASE" -t -c "SELECT COUNT(*) FROM pg_database WHERE datistemplate = false;" | xargs)
echo "Nombre de bases : $DATABASES"
echo ""
echo "✅ Tout fonctionne correctement !" Si vous débutez en Bash, voici des ressources :
Documentation :
- Bash Guide for Beginners : https://tldp.org/LDP/Bash-Beginners-Guide/html/
- Advanced Bash-Scripting Guide : https://tldp.org/LDP/abs/html/
Tutoriels interactifs :
Aide-mémoire :
# Aide sur une commande
man pg_dump
pg_dump --help
# Rechercher dans l'historique
history | grep pg_dump
# Complétion automatique (Tab)
pg_<TAB><TAB> # Liste toutes les commandes pg_*# ❌ MAUVAIS - Mot de passe en clair
PGPASSWORD="monmotdepasse" pg_dump mabase > backup.sql
# ✅ BON - Utiliser .pgpass
# Fichier ~/.pgpass : localhost:5432:*:postgres:monmotdepasse
# Permissions : chmod 600 ~/.pgpass
pg_dump mabase > backup.sql# Scripts contenant de la logique sensible
chmod 700 mon_script.sh # Lecture/Écriture/Exécution pour le propriétaire uniquement
chown postgres:postgres mon_script.sh
# Backups
chmod 600 backup.dump # Lecture/Écriture pour le propriétaire uniquement# ❌ MAUVAIS - Injection SQL possible
DATABASE=$1
psql -d "$DATABASE" -c "SELECT * FROM users"
# ✅ BON - Valider l'entrée
DATABASE=$1
# Vérifier que la base existe
if ! psql -lqt | cut -d \| -f 1 | grep -qw "$DATABASE"; then
echo "❌ Base de données '$DATABASE' inexistante"
exit 1
fi
psql -d "$DATABASE" -c "SELECT * FROM users"# ❌ MAUVAIS - Chemin relatif
cd backups
pg_dump mabase > backup.sql
# ✅ BON - Chemin absolu
BACKUP_DIR="/var/backups/postgresql"
mkdir -p "$BACKUP_DIR"
pg_dump mabase -f "$BACKUP_DIR/backup.sql" Toujours gérer les erreurs dans les scripts :
#!/bin/bash
# Arrêter le script en cas d'erreur
set -e # Exit si une commande échoue
set -u # Exit si une variable non définie est utilisée
set -o pipefail # Exit si une commande dans un pipe échoue
# Alternative : Gestion manuelle
DATABASE="mabase"
if ! pg_dump "$DATABASE" -f backup.sql; then
echo "❌ Échec du backup"
# Envoyer une alerte
echo "Backup failed" | mail -s "Alert" admin@example.com
exit 1
fi
echo "✅ Backup réussi"Toujours logger les actions importantes :
#!/bin/bash
LOG_FILE="/var/log/mes_scripts.log"
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a "$LOG_FILE"
}
log "Début du script"
if pg_dump mabase -f backup.sql; then
log "✅ Backup réussi"
else
log "❌ Backup échoué"
exit 1
fi
log "Fin du script"Checklist avant de mettre un script en production :
- Testé manuellement plusieurs fois
- Testé avec des données réelles (non-production)
- Gestion des erreurs implémentée
- Logs configurés
- Codes de retour appropriés
- Documentation du script (commentaires)
- Permissions correctes (chmod, chown)
- Pas de mots de passe en clair
- Variables d'environnement vérifiées
- Chemins absolus utilisés
N'exécutez pas tout en root :
# ✅ BON - Utilisateur dédié
# Créer un utilisateur pour PostgreSQL
sudo useradd -r -m -d /home/pgbackup -s /bin/bash pgbackup
# Scripts dans son répertoire
sudo mkdir -p /home/pgbackup/scripts
sudo chown pgbackup:pgbackup /home/pgbackup/scripts
# Exécuter en tant que cet utilisateur
sudo -u pgbackup /home/pgbackup/scripts/backup.sh
# Cron de cet utilisateur
sudo crontab -u pgbackup -eUn script bien documenté est un script maintenable :
#!/bin/bash
# ===========================================
# Script : backup_production.sh
# Description : Backup quotidien de la base production
# Auteur : Équipe DevOps
# Date création : 2025-11-21
# Dernière modification : 2025-11-21
# Version : 1.0
#
# Usage : ./backup_production.sh
# Cron : 0 2 * * * /usr/local/bin/backup_production.sh
#
# Prérequis :
# - PostgreSQL 18+
# - Fichier ~/.pgpass configuré
# - Espace disque > 50GB
#
# Contacts :
# - Support : devops@example.com
# - Astreinte : +33 6 XX XX XX XX
# ===========================================
# Configuration
DATABASE="production"
BACKUP_DIR="/var/backups/postgresql"
# ... reste du script- ✅ Pourquoi la ligne de commande est essentielle pour PostgreSQL
- ✅ Les avantages de l'automatisation (scripts vs GUI)
- ✅ L'environnement shell et les variables PostgreSQL
- ✅ La structure de cette annexe et son organisation
- ✅ Les conventions utilisées dans les exemples
- ✅ Les premiers pas avec des scripts simples
- ✅ Les règles de sécurité fondamentales
Vous êtes maintenant prêt à :
-
Découvrir les outils de base (pg_ctl, pg_dump, pg_restore)
→ Fichier :postgresql_outils_shell.md -
Créer des scripts de backup automatisés
→ Fichier :postgresql_scripts_backup_automatises.md -
Mettre en place le monitoring
→ Fichier :postgresql_scripts_monitoring_systeme.md
-
La ligne de commande = Automatisation
- Essentielle en production
- Scripts réutilisables et fiables
-
Sécurité avant tout
- Pas de mots de passe en clair
- Fichier .pgpass avec permissions 600
- Gestion des erreurs obligatoire
-
Progression graduelle
- Commencer simple
- Ajouter fonctionnalités progressivement
- Tester abondamment
-
Documentation = Maintenance facilitée
- Commenter les scripts
- Logger les actions
- Documenter les procédures
"Le meilleur moment pour automatiser était hier. Le second meilleur moment est maintenant."
Cette annexe vous donnera tous les outils pour administrer PostgreSQL efficacement en ligne de commande. Que vous soyez débutant ou expérimenté, vous trouverez des scripts adaptés à votre niveau.
N'ayez pas peur de la ligne de commande. Embrassez-la, et PostgreSQL deviendra votre allié le plus fidèle ! 🚀
Version : 1.0 - Novembre 2025
PostgreSQL : Version 18
Auteur : Formation PostgreSQL pour Développeurs et DevOps
📄 postgresql_annexe_g_introduction.md (ce fichier)
- Introduction générale
- Prérequis et environnement
- Premiers pas et bonnes pratiques
📄 postgresql_outils_shell.md
- pg_ctl, pg_dump, pg_restore
- Commandes essentielles
- Exemples concrets
📄 postgresql_scripts_backup_automatises.md
- Stratégies de backup
- Scripts automatisés
- Rotation et destinations
📄 postgresql_scripts_monitoring_systeme.md
- Monitoring système et PostgreSQL
- Métriques et alertes
- Tableaux de bord
Prêt à commencer ? Passez au fichier suivant : postgresql_outils_shell.md ! ✨