Aller au contenu

PostgreSQL : installation sur Ubuntu

PostgreSQL est un système de gestion de base de données relationnelle. Ce guide l’installe sur Ubuntu 24.04 et 26.04 et se limite à l’usage en ligne de commande. Les exemples utilisent des noms génériques (boutique, app).

Ubuntu Paquet postgresql Remarque
24.04 PostgreSQL 16 Supportée
26.04 PostgreSQL 18 Dernière version majeure à la sortie d’Ubuntu 26.04

Pour une version plus récente que celle d’Ubuntu (ou pour obtenir la 18 sur Ubuntu 24.04), utiliser le dépôt officiel PGDG (voir plus bas).

Fenêtre de terminal
sudo apt update
sudo apt install postgresql

Le paquet crée un cluster nommé main (une instance de PostgreSQL avec ses données) et démarre le service.

Fenêtre de terminal
sudo systemctl status postgresql # service global
pg_lsclusters # clusters : version, port, état, dossier de données
psql --version
sudo systemctl enable --now postgresql # démarrage automatique

PostgreSQL crée un compte système postgres, administrateur de l’instance. Par défaut, la connexion locale se fait par ce compte (authentification peer) :

Fenêtre de terminal
sudo -u postgres psql
SELECT version();
\conninfo
\q

Voir Rôles et droits. En résumé :

Fenêtre de terminal
sudo -u postgres createuser --pwprompt app # demande le mot de passe
sudo -u postgres createdb --owner=app boutique
psql -h 127.0.0.1 -U app boutique # test de connexion par mot de passe

Remplacer 18 par la version installée (pg_lsclusters).

Élément Emplacement
Configuration principale /etc/postgresql/18/main/postgresql.conf
Authentification des clients /etc/postgresql/18/main/pg_hba.conf
Données /var/lib/postgresql/18/main
Journal /var/log/postgresql/postgresql-18-main.log
Service du cluster postgresql@18-main.service
Fenêtre de terminal
sudo tail -n 50 /var/log/postgresql/postgresql-18-main.log
sudo systemctl restart postgresql@18-main

Par défaut, PostgreSQL n’écoute que sur localhost (listen_addresses = 'localhost'), port 5432.

Fenêtre de terminal
sudo apt install postgresql-common
sudo /usr/share/postgresql-common/pgdg/apt.postgresql.org.sh # ajoute le dépôt officiel
sudo apt install postgresql-18 # version majeure voulue

Plusieurs versions majeures peuvent coexister, chacune avec son cluster sur un port différent (pg_lsclusters).

Une mise à jour majeure ne se fait pas par apt upgrade : elle migre les données avec les outils de Debian et Ubuntu.

Fenêtre de terminal
sudo apt install postgresql-18 # installe la nouvelle version (crée un cluster vide)
pg_lsclusters
sudo pg_dropcluster 18 main --stop # supprime le cluster vide de la nouvelle version
sudo pg_upgradecluster 16 main # migre le cluster 16 vers la dernière version installée
pg_lsclusters # vérifier que la nouvelle version tourne sur le port 5432
sudo pg_dropcluster 16 main # supprime l'ancien cluster, après vérification
Fenêtre de terminal
sudo apt purge 'postgresql*'
sudo apt autoremove
Symptôme Piste
psql: FATAL: Peer authentication failed for user "app" La connexion locale par socket utilise le compte système : ajouter -h 127.0.0.1 pour s’authentifier par mot de passe
psql: could not connect to server: No such file or directory Cluster arrêté : pg_lsclusters, sudo systemctl start postgresql
Le cluster est down sudo tail /var/log/postgresql/postgresql-18-main.log : erreur de configuration, disque plein, port occupé
FATAL: role "app" does not exist Créer le rôle (voir Rôles et droits)

Ubuntu 24.04 et 26.04 : différences à connaître

Section intitulée « Ubuntu 24.04 et 26.04 : différences à connaître »