Installation de PostgreSQL : Un guide complet étape par étape

Installez PostgreSQL sur Linux, macOS ou Windows, puis créez un utilisateur, vérifiez l'accès et configurez des connexions réseau sécurisées.

Installation de PostgreSQL : Un guide complet étape par étape

L'installation de PostgreSQL est généralement simple, mais les détails diffèrent selon Linux, macOS et Windows. L'objectif n'est pas seulement de faire fonctionner le service ; vous avez également besoin d'un utilisateur de base de données utilisable, d'un moyen propre de vous connecter et de paramètres par défaut sécurisés pour l'accès réseau.

Utilisez ce guide pour installer PostgreSQL pour le développement ou une petite configuration de serveur, puis adaptez les chemins et les numéros de version aux paquets actuels de votre système d'exploitation.

Prérequis

Avant de commencer le processus d'installation, assurez-vous que votre système répond à ces exigences de base :

  • Privilèges d'administration : Vous aurez besoin de privilèges sudo sur Linux/macOS ou de droits d'administrateur sur Windows pour installer des logiciels et configurer les services système.
  • Connexion Internet : Requise pour télécharger les paquets d'installation.
  • Espace disque suffisant : Bien que l'installation initiale soit relativement petite, votre base de données va croître. Assurez-vous d'avoir un espace disque adéquat pour vos données.

Installation sur Linux

Les distributions Linux proposent généralement PostgreSQL via leurs dépôts de paquets par défaut, ce qui rend l'installation simple.

Debian/Ubuntu

Pour les systèmes basés sur Debian comme Ubuntu, vous pouvez installer PostgreSQL en utilisant apt.

  1. Mettre à jour les listes de paquets : Commencez toujours par mettre à jour les listes de votre gestionnaire de paquets pour vous assurer d'obtenir les derniers paquets disponibles.

    sudo apt update
    
  2. Installer PostgreSQL : Installez le paquet postgresql, qui inclut souvent le serveur, les utilitaires clients et la documentation. Vous pouvez spécifier une version (par exemple, postgresql-16) ou installer la version par défaut en utilisant simplement postgresql.

    sudo apt install postgresql postgresql-contrib
    

    Le paquet postgresql-contrib fournit des utilitaires et fonctionnalités supplémentaires.

    Remarque : Sur Debian/Ubuntu, le service PostgreSQL démarre généralement automatiquement après l'installation, et un utilisateur postgres par défaut (à la fois utilisateur système et utilisateur de base de données) est créé.

  3. Vérifier l'installation : Vérifiez l'état du service.

    sudo systemctl status postgresql
    

    Vous devriez voir une sortie indiquant qu'il est active (exited) ou active (running). exited est normal pour l'unité de service principale si elle gère plusieurs clusters qui s'exécutent en tant que processus séparés.

RHEL/CentOS/Fedora

Pour les systèmes basés sur Red Hat, utilisez dnf (ou yum pour les anciennes versions de CentOS/RHEL).

  1. Installer le dépôt PostgreSQL : PostgreSQL fournit son propre dépôt pour les versions plus récentes que celles disponibles dans les dépôts OS par défaut. Il est recommandé d'utiliser celui-ci pour les dernières versions stables.

    sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-8-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # Pour EL-9, utilisez : sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
    # Remplacez EL-8-x86_64 par votre version et architecture OS spécifiques si nécessaire.
    
  2. Désactiver le module PostgreSQL par défaut (si applicable) : Certaines versions de RHEL/CentOS ont un module PostgreSQL par défaut. Désactivez-le pour éviter les conflits avec le dépôt PGDG.

    sudo dnf -qy module disable postgresql
    
  3. Installer PostgreSQL : Installez les paquets serveur et contrib. Remplacez 16 par votre version souhaitée.

    sudo dnf install -y postgresql16-server postgresql16-contrib
    
  4. Initialiser le cluster de bases de données : Contrairement à Debian/Ubuntu, sur les systèmes basés sur RHEL, vous devez souvent initialiser manuellement le cluster de bases de données.

    sudo /usr/pgsql-16/bin/postgresql-16-setup initdb
    

    Ajustez le chemin /usr/pgsql-16/bin et postgresql-16-setup en fonction de votre version installée.

  5. Démarrer et activer le service PostgreSQL : Démarrez le service et configurez-le pour qu'il se lance au démarrage.

    sudo systemctl enable postgresql-16
    sudo systemctl start postgresql-16
    
  6. Vérifier l'installation : Vérifiez l'état du service.

    sudo systemctl status postgresql-16
    

Installation sur macOS

Sur macOS, Homebrew est la méthode recommandée et la plus simple pour installer PostgreSQL.

  1. Installer Homebrew (si ce n'est pas déjà fait) :

    /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
    

    Suivez les instructions à l'écran, y compris l'ajout de Homebrew à votre PATH.

  2. Installer PostgreSQL : Utilisez Homebrew pour installer PostgreSQL. Vous pouvez spécifier une version (par exemple, postgresql@16) ou installer la dernière version stable par défaut.

    brew install postgresql
    
  3. Démarrer le service PostgreSQL : Homebrew installe PostgreSQL en tant que service d'arrière-plan.

    brew services start postgresql
    

    Pour l'arrêter : brew services stop postgresql Pour le redémarrer : brew services restart postgresql

  4. Vérifier l'installation : Vérifiez si psql est disponible et connecté.

    psql -V
    

    Pour vous connecter à la base de données par défaut :

    psql postgres
    

    Astuce : Pour une expérience visuelle basée sur une application, envisagez Postgres.app, qui offre un moyen simple d'exécuter et de gérer PostgreSQL sans ligne de commande.

Installation sur Windows

Pour Windows, l'installateur graphique EnterpriseDB (EDB) est la méthode la plus courante pour une configuration PostgreSQL locale.

  1. Télécharger l'installateur : Visitez la page de téléchargement officielle de PostgreSQL (www.postgresql.org/download/windows/) et téléchargez le dernier installateur EDB pour votre version de Windows.

  2. Exécuter l'installateur : Exécutez le fichier .exe téléchargé. L'assistant d'installation vous guidera tout au long du processus.

    • Répertoire d'installation : Choisissez où PostgreSQL sera installé (par exemple, C:\Program Files\PostgreSQL\16).
    • Répertoire de données : Sélectionnez un emplacement pour vos fichiers de base de données (par exemple, C:\Program Files\PostgreSQL\16\data). C'est crucial et devrait idéalement se trouver sur un disque rapide et fiable.
    • Mot de passe pour le superutilisateur postgres : Définissez un mot de passe fort pour le superutilisateur de base de données postgres par défaut. Souvenez-vous de ce mot de passe car vous en aurez besoin pour vous connecter initialement.
    • Port : Le port PostgreSQL par défaut est 5432. Il est généralement sûr de laisser cette valeur par défaut sauf si vous avez des conflits.
    • Locale : Choisissez la locale par défaut pour votre cluster de bases de données.
  3. Stack Builder : Après l'installation, l'installateur EDB peut lancer Stack Builder. Cet outil aide à installer des pilotes, outils et extensions supplémentaires (comme pgAdmin 4). Il est fortement recommandé d'installer pgAdmin 4 pour une interface graphique de gestion de vos bases de données.

  4. Vérifier l'installation : Après l'installation, vous pouvez ouvrir pgAdmin 4 (généralement trouvé dans le menu Démarrer sous "PostgreSQL 16" ou similaire) et essayer de vous connecter à votre serveur local en utilisant le superutilisateur postgres et le mot de passe que vous avez défini.

Configuration initiale et étapes post-installation

Une fois PostgreSQL installé, ces étapes sont essentielles pour une configuration fonctionnelle et sécurisée.

1. Définir la variable d'environnement PATH (Optionnel, principalement pour Windows/macOS si psql n'est pas trouvé)

Pour exécuter facilement psql et d'autres binaires PostgreSQL depuis n'importe quel terminal, ajoutez le répertoire bin de PostgreSQL au PATH de votre système.

  • Linux : Souvent géré par le gestionnaire de paquets, mais sinon, ajoutez /usr/pgsql-X.Y/bin (RHEL) ou /usr/lib/postgresql/X.Y/bin (Debian/Ubuntu) à votre PATH.
  • macOS (Homebrew) : brew gère cela automatiquement.
  • Windows : Lors de l'installation EDB, il y a une option pour ajouter au PATH. Si elle n'est pas sélectionnée, vous pouvez ajouter C:\Program Files\PostgreSQL\16\bin (ajustez la version) manuellement via Propriétés système > Variables d'environnement.

2. Accéder au terminal psql

psql est l'interface en ligne de commande pour PostgreSQL, cruciale pour l'administration et les requêtes.

  • Linux/macOS : Basculez vers l'utilisateur système postgres (créé lors de l'installation).

    sudo -i -u postgres
    psql
    

    Vous êtes maintenant connecté à la base de données postgres en tant qu'utilisateur postgres. Tapez \q pour quitter.

  • Windows : Ouvrez SQL Shell (psql) depuis le menu Démarrer (PostgreSQL 16 > SQL Shell (psql)). Il vous demandera les détails du serveur et le mot de passe de l'utilisateur postgres.

3. Créer un nouvel utilisateur de base de données et une nouvelle base de données

Il est de bonne pratique de ne pas utiliser le superutilisateur postgres pour une utilisation quotidienne des applications. Créez un nouvel utilisateur et une nouvelle base de données dédiés.

  1. Connectez-vous en tant que superutilisateur postgres (comme indiqué ci-dessus).

  2. Créez un nouvel utilisateur (rôle) :

    CREATE USER monutilisateur WITH PASSWORD 'mot_de_passe_fort';
    

    Astuce : Remplacez monutilisateur et mot_de_passe_fort par des identifiants sécurisés.

  3. Créez une nouvelle base de données et attribuez la propriété :

    CREATE DATABASE mabasededonnees OWNER monutilisateur;
    
  4. Accordez des privilèges (si nécessaire, ou le propriétaire de CREATE DATABASE gère cela pour les opérations de base) :

    GRANT ALL PRIVILEGES ON DATABASE mabasededonnees TO monutilisateur;
    
  5. Quittez psql :

    \q
    

4. Configurer pg_hba.conf pour l'accès réseau

Le fichier pg_hba.conf contrôle l'authentification des clients. Par défaut, PostgreSQL peut n'autoriser les connexions que depuis localhost (127.0.0.1).

  • Emplacement : Ce fichier se trouve généralement dans le répertoire de données PostgreSQL (par exemple, /var/lib/postgresql/16/main/pg_hba.conf sur Debian/Ubuntu, /var/lib/pgsql/16/data/pg_hba.conf sur RHEL, ou C:\Program Files\PostgreSQL\16\data\pg_hba.conf sur Windows).

  • Modifiez le fichier (en tant que root/administrateur) :

    sudo nano /etc/postgresql/16/main/pg_hba.conf
    

    (Ajustez le chemin pour votre OS et votre version).

    Pour permettre à monutilisateur de se connecter depuis un sous-réseau de confiance en utilisant l'authentification par mot de passe, ajoutez une ligne comme celle-ci :

    # TYPE DATABASE  UTILISATEUR     ADRESSE                 METHODE
    host  mabasededonnees  monutilisateur  192.168.1.0/24          scram-sha-256
    

    scram-sha-256 est la méthode de mot de passe préférée pour les déploiements PostgreSQL modernes. Évitez 0.0.0.0/0 sauf si le serveur est également protégé par des règles de pare-feu strictes et que vous avez vraiment besoin d'un accès large.

  • Recharger PostgreSQL : Après avoir modifié pg_hba.conf, vous devez recharger le service PostgreSQL pour que les modifications prennent effet.

    sudo systemctl reload postgresql # Linux
    # Pour Homebrew sur macOS :
    # brew services restart postgresql
    # Pour Windows, redémarrez le service PostgreSQL via Services.msc
    

5. Configurer postgresql.conf (Écoute réseau)

Par défaut, PostgreSQL écoute souvent uniquement sur localhost. Pour accepter les connexions depuis d'autres machines, vous devez modifier postgresql.conf.

  • Emplacement : Ce fichier se trouve généralement dans le même répertoire que pg_hba.conf.

  • Modifiez le fichier :

    sudo nano /etc/postgresql/16/main/postgresql.conf
    

    Trouvez le paramètre listen_addresses et modifiez-le uniquement si des clients distants doivent se connecter :

    #listen_addresses = 'localhost' # sur quelle(s) adresse(s) IP écouter ;
    listen_addresses = 'localhost,192.168.1.10'
    

    Utilisez l'adresse IP privée réelle du serveur au lieu de 192.168.1.10. listen_addresses = '*' fonctionne également, mais il doit être associé à des règles pg_hba.conf et de pare-feu restrictives.

  • Redémarrer PostgreSQL : Les modifications de postgresql.conf nécessitent un redémarrage complet du service.

    sudo systemctl restart postgresql # Linux
    # brew services restart postgresql # macOS
    # Pour Windows, redémarrez le service PostgreSQL via Services.msc
    

Vérifier votre installation

Après toutes les configurations, effectuez une vérification finale :

  1. Vérifiez l'état du service PostgreSQL (systemctl status postgresql ou brew services list ou Services Windows).

  2. Connectez-vous en tant que votre nouvel utilisateur à votre nouvelle base de données :

    psql -h localhost -U monutilisateur -d mabasededonnees
    

    Le mot de passe de monutilisateur vous sera demandé. En cas de succès, vous verrez l'invite mabasededonnees=>. Tapez \q pour quitter.

    Si vous vous connectez depuis une machine différente, remplacez localhost par l'adresse IP du serveur.

Conseils et bonnes pratiques

  • Mots de passe forts : Utilisez toujours des mots de passe forts et uniques pour tous les utilisateurs de la base de données, en particulier le superutilisateur postgres.
  • Répertoire de données dédié : Pour la production, envisagez de placer le répertoire de données sur un volume dédié ou une matrice RAID pour les performances et la fiabilité.
  • Sauvegardes régulières : Mettez en œuvre une stratégie de sauvegarde robuste dès le premier jour. Les utilitaires pg_dump et pg_basebackup de PostgreSQL sont d'excellents outils pour cela.
  • Restez à jour : Maintenez votre installation PostgreSQL à jour pour bénéficier des corrections de bugs, des correctifs de sécurité et des nouvelles fonctionnalités. Utilisez le gestionnaire de paquets de votre système ou suivez le processus de mise à jour de l'installateur EDB.
  • Configuration du pare-feu : Si vous autorisez les connexions distantes, assurez-vous que le pare-feu de votre système (par exemple, ufw, firewalld, Pare-feu Windows) est configuré pour autoriser le trafic entrant sur le port 5432 (ou votre port choisi).

Conclusion

Une fois PostgreSQL installé, vérifiez le service, connectez-vous avec psql, créez un rôle d'application et limitez l'accès à distance. Pour la production, votre prochaine étape devrait être les sauvegardes et la surveillance avant que la base de données ne commence à contenir des données importantes.