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

Co-Fondateur d'IT-Connect, je souhaite partager mes connaissances et expériences avec vous, et comme la veille techno' est importante je partage aussi des actus.

florian a publié 1604 articles sur IT-Connect.See all posts by florian

3 réactions sur “PostgreSQL : Comment autoriser une connexion distante ?

  • 13/07/2017 à 13:56
    Permalink

    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
    • 13/07/2017 à 15:34
      Permalink

      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
      • 13/07/2017 à 17:37
        Permalink

        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

Laisser un commentaire

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