lunes, 30 de diciembre de 2013

Configurar PostgresSQL para que acepte conexiones remotas

Un nuevo reto profesional se me presenta, cuando se me ha presentado la oportunidad de echarle una mano a un compañero con la migración de su API en Django a .NET.

Así la primera piedra que me encuentro en el camino es que quiero acceder a la base de datos,una PostgresSQL de forma remota por medio de Gestor de esta base de datos pgAdmin.

El problema viene cuando intento conectar y el servidor me responde con que el fichero pg_hba.conf no tiene la entrada necesaria que me permita conectarme de forma remota. Realmente tengo que hacer dos cosas diferentes, pero lo primero es establecer una conexión remota vía SSH con una aplicación como Putty.

Ale, ya estoy dentro, con derechos suficientes (en mi caso de root) y tengo que encontrar el fichero de marras, que puede estar en varios y diferentes sitios. Por lo cual utilizo el siguiente comando desde el directorio raíz del servidor:

find / –iname “pg_hba.conf”

Lo cual me devuelve la dirección física en donde está el fichero. En este caso en:

/etc/postgresql/9.1/main/pg_hba.conf

Lo siguiente es editarlo con el “maravilloso” VIM, abriendo el fichero con el siguiente comando:

vim /etc/postgresql/9.1/main/pg_hba.conf

Aquí debo buscar la línea de comentario que pone, y añadirle la última entrada que muestro.

# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
host    all             all             0.0.0.0/0               password

Así le indico que permita acceder a la base de datos a cualquier IP, a cualquier base de datos que tenga el login  y password correctos. Lo ideal es cambiar password por md5, pero a mí me ha dado problemas. Y ahora mismo, lo de menos es la seguridad (todo a su tiempo).

Ahora tengo que editar otro fichero, que es el que configura las IP que escucha PostgresSQL, y que por defecto solo es localhost. Y aquí edito el fichero principal de configuración – una vez más con el terriblemente anticuado Vim.

vim /etc/postgresql/9.1/main/postgresql.conf

Aquí, básicamente tengo que descomentar dos líneas: una que permite escuchar por todas las ip, y la segunda que permita usar ssl.

listen_addresses = '*'          # what IP address(es) to listen on;
ssl = true                      # (change requires restart)

Solo me falta un paso más: reiniciar el servicio de la base de datos, y para ello me cambio al directorio:

/etc/init.d

En donde lanzo el siguiente comando.

sudo service postgresql restart

Espero un ratito a que se reinicie y, voala!!, ya puedo conectarme con mi base de datos… y ahora es cuando empieza lo bueno.

Espero que sea de ayuda.

No hay comentarios: