GNU/Linux >> Tutoriels Linux >  >> Linux

Comment autoriser la connexion à distance à la base de données PostgreSQL à l'aide de psql

Lorsque vous installez PostgreSQL, par défaut, la connexion à la base de données via TCP/IP n'est pas autorisée.

Lorsque vous essayez de vous connecter d'un client à une base de données PostgreSQL distante à l'aide de la commande psql, vous pouvez obtenir le message d'erreur « psql :impossible de se connecter au serveur :connexion refusée ».

Dans l'exemple suivant, à partir d'une machine cliente, nous essayons de nous connecter à une base de données PostgreSQL qui s'exécute sur le serveur 192.168.102.1. Comme vous le voyez dans la sortie, il est clairement indiqué que la base de données PostgreSQL distante n'accepte pas la connexion.

# psql -U postgres -h 192.168.102.1
psql: could not connect to server: Connection refused
        Is the server running on host "192.168.102.1" and accepting
        TCP/IP connections on port 5432?

Pour activer la connexion TCP/IP pour la base de données PostgreSQL, vous devez suivre les deux étapes mentionnées ci-dessous.

1. Modifiez pg_hba.conf pour ajouter l'enregistrement d'authentification client

Sur le serveur de base de données PostgreSQL, par défaut, vous remarquerez les enregistrements suivants vers la fin de /var/lib/pgsql/data/pg_hba.conf. Comme indiqué ci-dessous, il n'accepte que les connexions de l'hôte local.

# IPv4 local connections:
host    all         all         127.0.0.1/32          trust
# IPv6 local connections:
host    all         all         ::1/128               ident

Ajoutez la ligne suivante au serveur pg_hba.conf. Cela permettra la connexion à partir de l'adresse IP "192.168.101.20" (il s'agit du client dans notre exemple). Si vous souhaitez autoriser la connexion de plusieurs machines clientes sur un réseau spécifique, spécifiez ici l'adresse réseau au format d'adresse CIDR.

# vi  /var/lib/pgsql/data/pg_hba.conf
host    all         all         192.168.101.20/24    trust

Voici les différents formats d'enregistrement d'authentification client pris en charge dans le fichier pg_hba.conf. Nous utilisons le format #2 de cette liste.

  • méthode d'authentification de l'utilisateur de la base de données locale [option d'authentification]
  • utilisateur de la base de données hôte adresse CIDR méthode d'authentification [option d'authentification]
  • méthode d'authentification de l'utilisateur de la base de données hostssl adresse CIDR [option d'authentification]
  • hostnossl database user CIDR-address authentication-method [authentication-option]

Au lieu du format "adresse CIDR", vous pouvez également spécifier l'adresse IP et le masque de réseau dans des champs séparés en utilisant le format d'enregistrement suivant.

  • adresse IP de l'utilisateur de la base de données hôte masque IP méthode d'authentification [option d'authentification]
  • adresse IP de l'utilisateur de la base de données hostssl méthode d'authentification du masque IP [option d'authentification]
  • adresse IP de l'utilisateur de la base de données hostnossl masque IP méthode d'authentification [option d'authentification]

2. Modifier l'adresse d'écoute dans postgresql.conf

Sur le serveur de base de données PostgreSQL, par défaut, l'adresse d'écoute sera localhost dans le fichier postgresql.conf comme indiqué ci-dessous.

# grep listen /var/lib/pgsql/data/postgresql.conf
listen_addresses = 'localhost'

Modifiez cette ligne et donnez *. Si vous avez plusieurs interfaces sur le serveur, vous pouvez également spécifier une interface spécifique à écouter.

# grep listen /var/lib/pgsql/data/postgresql.conf
listen_addresses = '*'

3. Testez la connexion à distance

Maintenant, connectez-vous à la machine cliente 192.168.101.20 et effectuez la connexion à distance psql au serveur de base de données PostgreSQL (192.168.102.1) comme indiqué ci-dessous. Cette fois, ça devrait marcher.

# psql -U postgres -h 192.168.102.1
Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal.
postgres=#

De plus, si vous ne souhaitez pas spécifier le nom d'hôte dans le paramètre de ligne de commande à chaque fois, vous pouvez configurer l'adresse IP de la base de données PostgreSQL distante dans le nom de la variable d'environnement PGHOST, comme indiqué ci-dessous.

# export PGHOST=192.168.102.1
# psql -U postgres
Welcome to psql 8.1.11 (server 8.4.18), the PostgreSQL interactive terminal.
postgres=#

Linux
  1. Comment se connecter à une base de données Postgresql à partir de la ligne de commande

  2. Comment rechercher une base de données à l'aide de phpMyAdmin

  3. Comment sauvegarder et restaurer une base de données dans PostgreSQL

  4. Comment autoriser la connexion à distance au serveur de base de données MySQL

  5. Comment ajouter une connexion MySQL distante sous Linux ?

Comment installer PostgreSQL 14 dans RHEL 8 Linux

Comment autoriser l'accès à distance au serveur de base de données MySQL

Comment autoriser la connexion à distance au serveur MySQL dans cPanel/WHM Server ?

Comment créer une base de données PostgreSQL ?

MySQL à distance dans cPanel

Comment installer la base de données PostgreSQL et pgAdmin sous Linux