devstory

Configurer PostgreSQL pour autoriser les connexions à distance

  1. Connection à distance à Postgres

1. Connection à distance à Postgres

Parfois, lorsque vous réalisez une connexion à distance à la base de données Postgres, vous recevez une notification d'erreur comme ci-dessous:
could not connect to server: Connection refused (0x0000274D/10061)
La raison est que la base de données n'accepte que les connexions locales, par conséquent, vous devez configurer Postgres pour qu'il accepte les connexions à distance.
Avant de commencer, il est important de savoir qu'il existe deux fichiers de configuration contrôlant le fonctionnement du serveur de base de données Postgres, et vous devez modifier certains des paramètres de ces deux fichiers.
  • postgresql.conf
  • pg_hba.conf
Vous pouvez trouver ces deux fichiers dans le dossier:
  • /etc/postgresql/13/main (Linux)
  • C:/Program Files/PostgreSQL/13/data (Windows)
postgresql.conf
Le fichier postgresql.conf permet de configurer les adresse IP que Postgres utilise pour écouter les connexions. Par défaut, Postgres écoute uniquement l'adresse localhost, c'est la raison pour laquelle vous ne pouvez pas vous y téléconnecter.
Ouvrir Terminal dans Linux (Ubuntu,..) et accéder au dossier contenant le fichier postgresql.conf.
Pour Linux (Ubuntu,..), utiliser la commande nano pour ouvrir et modifier le fichier postgresql.conf.
sudo nano postgresql.conf
Chercher la ligne:
#listen_addresses = "localhost"
Et remplacer par:
listen_addresses = '*'
Ce changement permet à Postgres d'écouter toutes les adresses IP des ordinateurs qui l'installent. Vous pouvez également spécifier une liste d'adresses d'écoute (listen addresses) pour Postgres, qui se séparent par des virgules.
listen_addresses = '192.168.0.1,112.113.10.1'
Ensuite, appuyer CTRL + O --> ENTER pour enregistrer les modifications, et CTRL + X pour quitter le nano.
pg_hba.conf
Le fichier pg_hba.conf est utilisé pour identifier les clients. En d'autres termes, cela permet de spécifier quels clients sont autorisés à se connecter à Postgres. Le mot HBA est une abbréviation de "Host-Based Authentication" (Authentification basée sur l'hôte).
Pour Linux (Ubuntu,..), utiliser la commande nano pour ouvrir et modifier le fichier pg_hba.conf:
sudo nano pg_hba.conf
Chercher la ligne:
# IPv4 local connections:
host     all      all    127.0.0.1/32    md5
Et remplacer par:
# IPv4 local connections:
host     all      all    0.0.0.0/0   md5
Ce changement permet à tous les clients de se connecter à Postgres.
Vous pouvez également configurer pour autoriser une plage d'IP à se connecter à Postgres:
# IPv4 local connections:
host     all      all    112.100.20.1/30   md5
Enfin, redémarrer Postgres pour que les modifications prennent effet.
sudo service postgresql stop
sudo service postgresql start
En savoir plus: