Configurar el archivo pg_hba.conf para permitir el acceso de otros servidores a la base de datos


15

Tengo una base de datos postgres en un servidor y necesito acceder a ella desde otro servidor.

Necesito editar el archivo pg_hba.conf, pero ahora tengo idea de cuáles son los pasos para editar este archivo. Servidor Centos

Necesito agregar la siguiente línea en el archivo

host    all         all         10.0.2.12         255.255.255.255   trust

Lo ubiqué en var/lib/pgsql/data/

Ahora, básicamente, no estoy seguro de cuáles son los pasos correctos para hacer esto

Respuestas:


14

Primero tome una copia de seguridad del pg_hba.conf dado

sudo tar cvf /var/tmp/mybackup_pg_hba_conf.tar /var/lib/pgsql/data/pg_hba.conf

De esa manera, tienes la versión anterior lista si la arruinas. Una buena característica del archivo tar es que conserva los permisos y directorios. Entonces, cuando pg_hba.conf se rompe más allá del reconocimiento. Usted puede:

cd /
sudo tar xvf /var/tmp/mybackup_pg_hba_conf.tar

Esto restaurará la copia de seguridad pg_hba.conf del archivo que creó anteriormente.

En cuanto a la inserción real de la línea:

sudo su -c 'echo "host    all         all         10.0.2.12         255.255.255.255   trust" >> /var/lib/pgsql/data/pg_hba.conf'

(NOTA: Comando editado. ¡Gracias bortzmeyer!)

Deberías hacerlo. Tenga en cuenta que esto solo agrega la línea en pg_hba.conf. Si alguna vez necesita cambiarlo, debe usar un editor real. Como vi. Su curva de aprendizaje puede ser un poco empinada, pero después de haber aprendido al menos los conceptos básicos, debe estar bastante seguro en la mayoría de los entornos unix que encuentre.

Ahora que he vuelto a la pista, debe intentar reiniciar su base de datos postgresql. En una máquina Centos, creo que esto se hace mediante:

sudo service postgresql restart

o simplemente puede volver a cargar la configuración sin reiniciar:

su - postgres
pg_ctl reload

Ahora debería poder acceder a su base de datos postrgresql de máquinas Centos desde 10.0.2.12


1
El sudo en el último comando no funcionará ya que la operación privilegiada se realiza mediante una redirección, que es manejada por el shell, no por el programa que ejecuta con sudo (echo, en este caso).
bortzmeyer

¡Buen punto! Debe escribirse como sudo "echo 'host all 10.0.2.12 255.255.255.255 trust' >> /var/lib/pgsql/data/pg_hba.conf"
pyhimys

La forma ideal sería ponerlo bajo control de versión en una ubicación de administrador e implementarlo después de cambiarlo a través de SSH, etc.
vfclists

1
La ubicación predeterminada del archivo pg_hba.conf es un poco diferente en 9.4: /var/lib/pgsql/9.4/data/pg_hba.conf.
Sergey Vlasov

13

No olvides editar postgresql.conf y cambiar / agregar línea

listen_addresses = '*'

Postgresql por defecto escucha en localhost


¿No es su ejemplo list_addresses demasiado permisivo? Ese es un agujero de seguridad enorme si el servidor se ejecuta en múltiples IP, es decir, público, interno, VPN, etc.
vfclists
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.