GNU/Linux >> Tutoriales Linux >  >> Linux

Cómo permitir la conexión remota a la base de datos PostgreSQL usando psql

Cuando instala PostgreSQL, por defecto no se permite la conexión a la base de datos usando TCP/IP.

Cuando intenta conectarse desde un cliente a una base de datos PostgreSQL remota usando el comando psql, es posible que reciba el mensaje de error "psql:no se pudo conectar al servidor:Conexión rechazada".

En el siguiente ejemplo, desde una máquina cliente, intentamos conectarnos a una base de datos PostgreSQL que se ejecuta en el servidor 192.168.102.1. Como puede ver en el resultado, dice claramente que la base de datos PostgreSQL remota no acepta la conexión.

# 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?

Para habilitar la conexión TCP/IP para la base de datos PostgreSQL, debe seguir los dos pasos que se mencionan a continuación.

1. Modifique pg_hba.conf para agregar el registro de autenticación del cliente

En el servidor de base de datos de PostgreSQL, de manera predeterminada, notará los siguientes registros hacia el final de /var/lib/pgsql/data/pg_hba.conf. Como se indica a continuación, acepta conexiones solo desde el servidor local.

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

Agregue la siguiente línea al servidor pg_hba.conf. Esto permitirá la conexión desde la dirección IP "192.168.101.20" (Este es el cliente en nuestro ejemplo). Si desea permitir la conexión desde varias máquinas cliente en una red específica, especifique aquí la dirección de red en el formato de dirección CIDR.

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

Los siguientes son varios formatos de registro de autenticación de clientes admitidos en el archivo pg_hba.conf. Estamos usando el formato #2 de esta lista.

  • método de autenticación del usuario de la base de datos local [opción de autenticación]
  • método de autenticación de la dirección CIDR del usuario de la base de datos del host [opción de autenticación]
  • método de autenticación de la dirección CIDR del usuario de la base de datos hostssl [opción de autenticación]
  • método de autenticación de la dirección CIDR del usuario de la base de datos hostnossl [opción de autenticación]

En lugar del formato de "dirección CIDR", también puede especificar la dirección IP y la máscara de red en campos separados utilizando el siguiente formato de registro.

  • usuario de la base de datos del host dirección IP máscara IP método de autenticación [opción de autenticación]
  • usuario de la base de datos hostssl dirección IP máscara IP método de autenticación [opción de autenticación]
  • usuario de la base de datos hostnossl dirección IP máscara IP método de autenticación [opción de autenticación]

2. Cambie la dirección de escucha en postgresql.conf

En el servidor de la base de datos PostgreSQL, de forma predeterminada, la dirección de escucha será localhost en el archivo postgresql.conf como se muestra a continuación.

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

Modifique esta línea y proporcione *. Si tiene varias interfaces en el servidor, también puede especificar una interfaz específica para escuchar.

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

3. Probar la conexión remota

Ahora, inicie sesión en la máquina cliente 192.168.101.20 y realice la conexión remota psql al servidor de la base de datos PostgreSQL (192.168.102.1) como se muestra a continuación. Esta vez debería funcionar.

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

Además, si no desea especificar el nombre de host en el parámetro de la línea de comando cada vez, puede configurar la dirección IP de la base de datos PostgreSQL remota en el nombre de la variable de entorno PGHOST como se muestra a continuación.

# 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. Cómo iniciar sesión en una base de datos Postgresql desde la línea de comandos

  2. Cómo buscar una base de datos usando phpMyAdmin

  3. Cómo hacer una copia de seguridad y restaurar la base de datos en PostgreSQL

  4. Cómo permitir la conexión remota al servidor de base de datos MySQL

  5. ¿Cómo agregar una conexión MySQL remota en Linux?

Cómo instalar PostgreSQL 14 en RHEL 8 Linux

Cómo permitir el acceso remoto al servidor de base de datos MySQL

¿Cómo permitir la conexión remota al servidor MySQL en el servidor cPanel/WHM?

¿Cómo crear una base de datos PostgreSQL?

MySQL remoto en cPanel

Cómo instalar la base de datos PostgreSQL y pgAdmin en Linux