PostgreSQL : Comment autoriser une connexion distante ?

I. Présentation

Récemment, j'ai mis en place un serveur PostgreSQL pour une application hébergée sur le même serveur. Ce qui ne pose pas de problème puisque par défaut PostgreSQL autorise les connexions locales. Cependant, pour réaliser une sauvegarde des bases de données à distance, la connexion était bloquée pour plusieurs raisons :

  • Le pare-feu du serveur Windows bloquait la connexion
  • PostgreSQL autorise seulement les connexions locales (en IPv4 et IPv6)

Pour rendre la connexion distante possible, il y a un peu de configuration à effectuer, c'est ce que nous allons voir ensemble. J'utilise PostgreSQL 9.3.8.

II. Etape n°1 - Ouvrir le port sur le pare-feu

Nous allons commencer par ouvrir le port sur le serveur Windows afin d'autoriser les connexions entrantes sur ce port. Ouvrez le panneau de configuration, puis dans les paramètres avancés du pare-feu, créez une nouvelle règle de trafic entrant, comme ceci :

Sélectionnez "Port" et poursuivez...

On va prendre le port TCP et le numéro de port "5432" qui correspond au port par défaut de postgreSQL.

Nous souhaitons autoriser le flux donc choisissez "Autoriser la connexion".

Pour ma part, il s'agit de serveurs dans le domaine, je vais donc activer la règle uniquement pour ce profil. Il est inutile de l'activer sur les autres profils.

Donnez un petit nom à cette règle et éventuellement une description, puis validez.

Nous allons affiner la configuration de la règle. En effet, je souhaite que seul mon serveur de sauvegarde soit autorisé à se connecter à distance à postgreSQL, je vais donc restreindre les autorisations à son adresse IP.

Sur la règle que vous venez de créer, effectuez un clic droit puis "Propriétés".

Ensuite dans l'onglet "Etendue", cliquez sur "Ces adresses IP" au niveau de la zone "Adresse IP distante". Dans la seconde fenêtre qui s'ouvre indiquez l'adresse IP du serveur à autoriser et validez.

Le pare-feu est configuré, il ne reste plus qu'à s'occuper de la config de postgreSQL est le tour sera joué !

III. Etape n°2 - Configurer postgreSQL

Pour gérer les connexions autorisées, postgreSQL s'appuie sur un fichier de configuration nommé "pg_hba.conf". Il est stocké par défaut à l'emplacement suivant (à adapter au besoin) : "C:\Programmes\PostgreSQL\9.3\data".

Editez le fichier est à la fin il est nécessaire d'ajouter une ligne pour déclarer l'autorisation que vous souhaitez donner.

Les champs à déclarer sont les suivants : TYPE / DATABASE / USER / ADDRESS / METHOD

Pour autoriser l'hôte "192.168.1.243" à accéder à toutes les bases de données du serveur postgreSQL en s'authentifiant avec l'utilisateur "info", la ligne sera la suivante :

host        all       info     192.168.1.243/32    md5

Il est à noter qu'à la place de "all" vous pouvez indiquer le ou les noms des bases de données sur lesquelles la connexion doit être possible.

Ce qui donne dans le fichier :

Inutile de redémarrer le service postgreSQL, la modification est immédiatement prise en compte. Pour ma part, suite à cette configuration, j'ai pu me connecter à distance depuis mon logiciel de sauvegarde sur le serveur postgreSQL :

J'espère que cette astuce vous sera utile 🙂

Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Partager sur Google+ Envoyer par mail

Florian BURNEL

Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.

Nombre de posts de cet auteur : 5470.Voir tous les posts

8 thoughts on “PostgreSQL : Comment autoriser une connexion distante ?

  • Bonjour,

    J’ai tout de même un sacré problème avec ce que je vois. Quel est l’intérêt d’installer une base Postgre sur un windows, c’est le genre de moteur concu pour fonctionner sous Linux et porté sur windows par la suite.

    C’est moche et ca ne sert à rien et ca monopolise une licence windows pour rien. Bref le paradoxe, vouloir utiliser un outil libre et gratuit sur un produit propriétaire et payant, autant y mettre un sql express, au moins ca serait cohérent.

    Répondre
    • Bonjour Willy,

      Je comprends ta remarque qui est légitime, mais il existe des applis qui s’installe seulement sur Windows et qui s’appuie sur du PostgreSQL, donc « pas le choix » :-/

      Florian

      Répondre
      • Le titre de l’article parle de lui même, autoriser une connexion distante, autant installer postgreSQL sur linux et faire pointer l’appli windows vers la base sur Linux.

        Encore une fois cela reste de la cohérence.

        Répondre
        • Donc acheter une nouvelle machine pour… ? Bah pour rien, vu que ça marche très bien sur windows.

          Répondre
  • Bonjour
    comment fait-on pour autoriser n’importe quelle adresse à se connecter sur la base Postgresql.
    les poste client sont en DHCP avec des adresses qui changent souvent et qui me sont inconnues , comment fait-on?

    Merci

    Répondre
  • Bonjour,

    Je ne suis pas encore top dans le domaine de l’architecture informatique. Votre sujet concerne bien si on souhaite se connecter à un PostGreSQL d’un server à distance?

    Je suis dans le cas où je dispose d’un serveur à distance (a2hosting) dans lequel se trouve postgresql qui contient des données. Je m’entraine à comprendre comment à partir de mon Shell SQL je me connecte à cette BD. Vos instructions correspondent aussi à ce cas?

    Bien à vous,

    Répondre
  • Moi je veux savoir comment définir une plage de 120 postes à autoriser

    Répondre
    • Bonjour, au lieu de l’ip precise avec un masque /32, utilisez l’adresse du (sous)réseau local. Le plus commun est le /24, mais si vous ne voulez que 120 et pas plus, utilisez x.x.x.0/25 ou x.x.x.128/25

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.