Installer PostgreSQL sur Debian
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
sudo apt update
sudo apt install postgresql
sudo pg_lsclustersDebian 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
sudo -u postgres psqlL'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
sudo -u postgres psql <<'SQL'
CREATE ROLE app LOGIN PASSWORD 'mot-de-passe-fort';
CREATE DATABASE app OWNER app ENCODING 'UTF8';
SQLUn 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 :
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 :
sudo systemctl reload postgresql
sudo pg_isreadyUn 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
- Sauvegarder et restaurer une base MySQL/MariaDBProduire un dump cohérent, le restaurer dans une base de test et l'automatiser avec une copie hors site.
- Installer Docker sur DebianInstaller Docker depuis le dépôt officiel, vérifier le démon et connaître les limites d'un conteneur système.
- Installer MariaDB sur DebianInstaller MariaDB sur Debian 13, limiter l'écoute locale et créer une base avec un utilisateur dédié.