Connexion machine distante PostgreSql : Différence entre versions
m |
(Aucune différence)
|
Version actuelle en date du 22 décembre 2020 à 17:17
Pour une installation de PostgreSql
sur un serveur Ubuntu
, les connexions autre que depuis la machine ne sont pas autorisées par défaut. Le message d'erreur suivant est affiché.
Connection Refused: connect
Cet article présente les configurations mises en place dans les paquets Ubuntu
, ainsi que comment accéder à la base depuis une machine distante.
Votre avis
Nobody voted on this yet
|
|
Etude
Afin d'autoriser les connexions distantes, il est nécessaire de modifier l'adresse d'écoute, fichier postgresql.conf
, et de configurer les droits d'accès, fichier pg_hba.conf
Dans le cadre de cet article, la version 10
est installée avec les paquets Ubuntu
. Les fichiers impactés se trouve aux emplacements /etc/postgresql/10/main/postgresql.conf
et /etc/postgresql/10/main/pg_hba.conf
.
Configuration
Dans un premier temps, il faut modifier l'adresse d'écoute, à l'aide du paramètre listen_addresses
dans le fichier postgresql.conf
.
La valeur par défaut est positionnée à localhost
, n'autorisant les connexions que depuis la machine, car l'adresse écoutée est 127.0.0.1
. afin d'ouvrir sur toutes les interfaces disponibles, il suffit de remplacer la valeur par *
.
#------------------------------------------------------------------------------
# CONNECTIONS AND AUTHENTICATION
#------------------------------------------------------------------------------
# - Connection Settings -
#listen_addresses = 'localhost' # what IP address(es) to listen on;
# comma-separated list of addresses;
# defaults to 'localhost'; use '*' for all
# (change requires restart)
listen_addresses = '*'
port = 5432 # (change requires restart)
Cependant, modifier directement le fichier peut être problématique lors de montée de version de l'instance. En utilisant les paquets Ubuntu
, il pourra être demandé d'investiguer de possibles différences entre le fichier modifié et celui venant du paquet.
Or, il se trouve que le fichier de configuration contient le paramètre include_dir
pour spécifier un répertoire où des fichiers de configurations peuvent être placés.
#------------------------------------------------------------------------------
# CONFIG FILE INCLUDES
#------------------------------------------------------------------------------
# These options allow settings to be loaded from files other than the
# default postgresql.conf.
include_dir = 'conf.d' # include files ending in '.conf' from
# directory 'conf.d'
#include_if_exists = 'exists.conf' # include file only if it exists
#include = 'special.conf' # include file
Il est donc possible de ne pas modifier le fichier installée mais d'en créer un nouveau, pourvu que le nom se termine par .conf
, et d'y placer les spécificités, qui peuvent surchargées les paramètres mis en place dans le fichier postgresql.conf
.
Pour cet article, un fichier remote_access.conf
est créé en spécifiant uniquement le paramètre listen_addresses
.
#sudo echo "listen_addresses = '*'" > /etc/postgresql/10/main/conf.d/remote_access.conf #sudo chown postgres:postgres /etc/postgresql/10/main/conf.d/remote_access.conf
Le contenu du fichier est aussi simple que ceci.
listen_addresses = '*'
Une fois cela mis en place, la connexion aux bases sont possibles depuis n'importe quelle station du réseau, à condition d'avoir un compte utilisateur déclaré dans la base. Cette problématique peut être adressée par la mise en place de configuration Iptables afin de restreindre les accès sur le port d'écoute à un ensemble de machines.
Droits d'accès
Dans le précédent paragraphe, l'adresse d'écoute a été modifiée. Mais cela n'est pas suffisant pour se connecter depuis une machine externe avec le message suivant.
FATAL: no pg_hba.conf entry for host "<HOST_IP>", user "<USER_LOGIN>", database "<DATABASE>", SSL off
Où <HOST_IP>
contient l'adresse IP de la machine, <USER_LOGIN>
le login de connexion à la base et <DATABASE>
le nom de la base sur laquelle la connexion est tentée.
Le message d'erreur indique clairement qu'aucune configuration valide n'a été trouvé pour ce contexte dans le fichier pg_hba.conf
. Pour cet article, la configuration ajoutée doit permettre les accès distants sur un ensemble du sous réseau, pour toutes les bases et avec tous les identifiants. Les lignes suivantes sont ajoutées en fin de fichier.
# Remote
host all all 192.168.1.0/27 md5
A noter que les addresses IP sont configurés avec un masque CIDR
. Pour cet exemple, les IPs configurées sont entre 192.168.1.0
et 198.162.1.31
.
Les connexions sont alors possibles depuis les machines externes.
Activation
Afin que les modifications soient prises en comptes, il est nécessaire de redémarrer l'instance.
#systemctl restart postgresql
Voir Aussi
Documentation officielle: https://www.postgresql.org/docs/10/runtime-config-connection.html