Offre Durée limitée : -10% sur tout le site* avec le code WELCOME10

Installer PostgreSQL sur un serveur Linux et sécuriser les accès

Mis à jour le 16 octobre 2026 6 min de lecture 8 sections

Installer PostgreSQL sur un serveur Linux et sécuriser les accès

PostgreSQL est un système de gestion de base de données relationnelle (SGBD) open source reconnu pour sa fiabilité et sa conformité SQL avancée. Sur un VPS Linux ou un serveur dédié Linux Ubuntu ou Debian, il constitue un choix solide pour héberger des bases de données applicatives, des API back-end ou des outils d'administration. Ce guide d'installation couvre l'installation du package PostgreSQL, la création de rôles dédiés, la configuration de pg_hba.conf et la restriction des accès réseau depuis la ligne de commande SSH. Contrairement à MariaDB ou MySQL, PostgreSQL intègre nativement des types de données avancés (JSON, arrays, UUID) et une gestion fine des rôles et des privilèges.

Installer le package PostgreSQL sur Ubuntu ou Debian

Connectez-vous en SSH à votre VPS Ubuntu ou à votre serveur dédié Linux en tant que root ou avec un utilisateur admin disposant de sudo. Mettez à jour les paquets puis installez le serveur PostgreSQL :

sudo apt update
sudo apt install -y postgresql postgresql-contrib

Ce package installe le serveur PostgreSQL et les utilitaires complémentaires (postgresql-contrib ajoute des extensions utiles comme pg_stat_statements pour le monitoring des requêtes). Le daemon postgresql est activé et démarré automatiquement par systemd lors de l'installation. Vérifiez que le service est actif sur votre serveur Linux :

systemctl status postgresql

La version du package dépend de votre distribution : Ubuntu 22.04 fournit PostgreSQL 14, Ubuntu 24.04 fournit PostgreSQL 16. Pour une version spécifique, ajoutez le dépôt officiel PGDG (apt.postgresql.org) avant l'installation. Sur un serveur dédié Linux ou un VPS SSD, les performances de PostgreSQL bénéficient d'un stockage NVMe rapide et de la RAM disponible pour les tampons (shared_buffers).

Connexion initiale avec le rôle postgres

L'installation crée automatiquement un superutilisateur PostgreSQL nommé postgres et un compte système Unix portant le même nom. Pour accéder au shell psql depuis votre ligne de commande SSH, basculez vers ce compte puis ouvrez le client interactif :

sudo -u postgres psql

Vous êtes maintenant connecté à la console PostgreSQL en tant que superutilisateur. Vérifiez la version installée et listez les bases de données existantes sur votre serveur Linux :

SELECT version();
\l

Quittez le shell psql avec \q. Pour administrer votre instance PostgreSQL depuis un utilisateur admin système disposant de sudo, vous pouvez également exécuter des commandes SQL directement :

sudo -u postgres psql -c "SELECT current_user, current_database();"

Créer un rôle PostgreSQL dédié

Sur un VPS Linux en production, ne connectez jamais vos applications avec le superutilisateur postgres. Créez un rôle dédié avec les droits stricts nécessaires à votre application. En SQL dans psql, un rôle avec connexion se crée ainsi (selon la documentation officielle PostgreSQL 18) :

-- Créer un rôle avec login et mot de passe
CREATE ROLE app_user WITH LOGIN PASSWORD 'VotreMotDePasseSolide';

-- Créer la base de données applicative
CREATE DATABASE app_db OWNER app_user;

-- Accorder les droits sur la base
GRANT CONNECT ON DATABASE app_db TO app_user;
\c app_db
GRANT USAGE ON SCHEMA public TO app_user;
GRANT SELECT, INSERT, UPDATE, DELETE ON ALL TABLES IN SCHEMA public TO app_user;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT, INSERT, UPDATE, DELETE ON TABLES TO app_user;

La commande CREATE USER est équivalente à CREATE ROLE ... LOGIN (source : documentation PostgreSQL 18). L'option ALTER DEFAULT PRIVILEGES garantit que les tables créées ultérieurement seront accessibles au rôle sans nouvelle commande GRANT. Pour vérifier les rôles existants sur votre serveur PostgreSQL, utilisez la commande psql : \du. Cette pratique d'administration des rôles est une des différences majeures entre PostgreSQL et MariaDB, où la gestion des privilèges est moins granulaire.

Configurer pg_hba.conf pour contrôler les accès

Le fichier pg_hba.conf (HBA : Host-Based Authentication) contrôle quels clients peuvent se connecter à quelles bases de données PostgreSQL, depuis quelle adresse IP et avec quelle méthode d'authentification. Sur Ubuntu, ce fichier de configuration se trouve dans le répertoire de données de votre instance PostgreSQL :

# Ubuntu 22.04 / PostgreSQL 14
sudo nano /etc/postgresql/14/main/pg_hba.conf
# Ubuntu 24.04 / PostgreSQL 16
sudo nano /etc/postgresql/16/main/pg_hba.conf

Chaque ligne du fichier suit le format : TYPE DATABASE USER ADDRESS METHOD. Par défaut, Ubuntu configure peer pour les connexions locales Unix (le compte système doit correspondre au rôle PostgreSQL) et scram-sha-256 pour les connexions TCP/IP. Pour autoriser votre application à se connecter en local avec un mot de passe :

# Autoriser app_user sur app_db depuis localhost avec mot de passe
host    app_db    app_user    127.0.0.1/32    scram-sha-256

Après toute modification de pg_hba.conf, rechargez la config sans redémarrer le daemon PostgreSQL (les connexions existantes ne sont pas interrompues) :

# Via systemctl
sudo systemctl reload postgresql

Pour tester en pré-production les modifications du fichier avant de recharger, interrogez la vue système pg_hba_file_rules : les lignes avec un champ error non nul indiquent des problèmes de syntaxe (source : documentation officielle PostgreSQL 18). Cette étape de validation est indispensable avant tout redéploiement en production sur votre serveur dédié Linux.

Sécuriser l'accès réseau PostgreSQL sur le VPS Linux

Par défaut sur Ubuntu, PostgreSQL écoute uniquement sur localhost, ce qui est la configuration correcte si vos applications et scripts tournent sur le même serveur dédié ou VPS Linux. Vérifiez l'adresse d'écoute dans postgresql.conf :

grep listen_addresses /etc/postgresql/16/main/postgresql.conf

Si votre base de données doit être accessible depuis un autre serveur (architecture multi-instances), limitez strictement les adresses autorisées plutôt que d'utiliser listen_addresses = '*'. Complétez avec une règle de pare-feu (firewall) pour n'autoriser que l'adresse IP du serveur applicatif sur le port 5432 :

# Avec UFW sur votre VPS Linux
sudo ufw allow from 203.0.113.10 to any port 5432 comment "Serveur appli"
sudo ufw deny 5432

Pour la gestion des règles de pare-feu UFW sur un VPS Linux, consultez notre guide ouvrir les ports UFW sur Linux. Pour protéger l'accès SSH de votre serveur avec Fail2ban, consultez notre guide Fail2ban VPS Linux SSH.

Sauvegarder et restaurer une base PostgreSQL

Pour sauvegarder (backup) une base PostgreSQL depuis la ligne de commande de votre serveur Linux, utilisez pg_dump (une seule base) ou pg_dumpall (toutes les bases et rôles globaux). pg_dumpall nécessite les droits superutilisateur pour lire toutes les bases et exporter les rôles globaux (source : documentation officielle PostgreSQL 18) :

# Backup d'une seule base en format compressé
sudo -u postgres pg_dump -Fc app_db > /var/backups/postgres/app_db_$(date +%Y%m%d).dump

# Dump complet de toutes les bases et rôles globaux
sudo -u postgres pg_dumpall | gzip > /var/backups/postgres/all_$(date +%Y%m%d).sql.gz

Restaurez une base depuis un dump pg_dump -Fc avec pg_restore :

sudo -u postgres pg_restore -d app_db /var/backups/postgres/app_db_20261015.dump

Planifiez ces backups automatiquement avec cron sur votre VPS Linux. Pour envoyer les dumps vers un stockage distant hors du serveur, consultez notre guide sauvegarder avec rsync.

Monitoring et supervision de PostgreSQL sur le serveur Linux

Pour le monitoring des connexions et des requêtes actives sur votre instance PostgreSQL en production, interrogez la vue pg_stat_activity depuis la ligne de commande de votre serveur Linux :

sudo -u postgres psql -c "SELECT pid, usename, application_name, state, query FROM pg_stat_activity WHERE state != 'idle';"

Pour vérifier la taille des bases de données sur votre serveur dédié ou VPS SSD :

sudo -u postgres psql -c "\l+"

Surveillez l'espace disque disponible sur votre VPS Linux pour anticiper la saturation du stockage SSD : consultez notre guide surveiller l'espace disque VPS Linux. Pour un monitoring complet de votre serveur Linux (CPU, RAM, disque), consultez notre guide surveiller les ressources VPS Linux.

Besoin d'un VPS Linux SSD performant pour héberger PostgreSQL en production ? ElypseCloud propose des VPS Ubuntu et Debian avec stockage NVMe, idéaux pour vos bases de données relationnelles.

Voir les VPS Linux ElypseCloud