Installer PostgreSQL sur Debian

2 min de lecture07 novembre 2026

PostgreSQL est un choix solide pour une application qui a besoin de transactions strictes, de types riches ou de requêtes complexes. Sur Debian, l'installation crée un cluster prêt à l'emploi, mais l'authentification et l'écoute réseau doivent être comprises avant d'ouvrir quoi que ce soit. Voici le parcours minimal, du paquet à une connexion applicative testée.

Installer et vérifier le cluster

Bash
sudo apt update
sudo apt install postgresql
sudo pg_lsclusters

Debian 13 installe PostgreSQL 17. Le cluster main écoute sur localhost:5432 et utilise un socket Unix. Le service systemd s'appelle postgresql ; systemctl status postgresql couvre tous les clusters. Le port et le répertoire de configuration apparaissent dans la sortie de pg_lsclusters.

Se connecter avec psql

Bash
sudo -u postgres psql

L'authentification peer du socket associe l'utilisateur Unix postgres au rôle PostgreSQL du même nom. Depuis ce shell, \du liste les rôles, \l les bases et \q quitte. Évitez de travailler durablement en superuser : créez un rôle applicatif.

Créer un rôle et une base

Bash
sudo -u postgres psql <<'SQL'
CREATE ROLE app LOGIN PASSWORD 'mot-de-passe-fort';
CREATE DATABASE app OWNER app ENCODING 'UTF8';
SQL

Un rôle LOGIN peut se connecter ; OWNER donne les droits sur la base, mais pas le statut superuser. N'utilisez pas GRANT ALL ON *.* pour une application. Testez la connexion TCP :

Bash
psql "host=127.0.0.1 dbname=app user=app" -c "SELECT current_user;"

Authentification et écoute locale

Deux fichiers dans /etc/postgresql/17/main/ : postgresql.conf pour listen_addresses, pg_hba.conf pour les règles d'authentification. La valeur par défaut listen_addresses = 'localhost' suffit quand l'application tourne sur la même machine. Ne la passez pas à '*' sans pare-feu.

Dans pg_hba.conf, une ligne host all all 127.0.0.1/32 scram-sha-256 autorise les connexions TCP locales avec un mot de passe haché. peer ne fonctionne que sur le socket local et dépend du nom d'utilisateur Unix. Après modification :

Bash
sudo systemctl reload postgresql
sudo pg_isready

Un reload suffit pour pg_hba.conf et postgresql.conf ; un restart coupe les connexions en cours.

Vérifier et dépanner

journalctl -u postgresql -n 50 montre les erreurs de démarrage. password authentication failed vient de pg_hba.conf ou du mot de passe ; database "app" does not exist d'une base créée dans un autre cluster ; connection refused d'un service arrêté ou d'une écoute sur une autre adresse. Vérifiez l'écoute avec ss -ltnp | grep 5432.

Pour les sauvegardes, utilisez pg_dump avec un rôle dédié en lecture plutôt qu'une copie des fichiers de données à chaud. Une base exposée sans TLS ni pare-feu doit être corrigée avant tout autre réglage.

Publicité

Cet article vous a-t-il aidé ?

À lire aussi