¿Cómo conectarse a una base de datos remota PostgreSQL en Ubuntu usando pgAdmin3?

22

Estoy tratando de configurar una base de datos PostgreSQL en una máquina Ubuntu. Me gustaría poder acceder a él usando pgAdmin3 desde una máquina remota. ¿Cómo configuro esto?

He instalado la base de datos PostgreSQL en Ubuntu usando:

sudo apt-get install postgresql

En mi /etc/postgresql/9.1/main/pg_hba.conftengo esta línea:

host    all    all    all    password

por lo tanto, debe aceptar conexiones de todas las direcciones IPv4 y las contraseñas deben enviarse en texto claro (esto es por razones de desarrollo).

Si ejecuto este comando para ver qué servicios se están ejecutando:

sudo netstat -tulpn

Puedo ver estas líneas, que muestran que PostgreSQL está aceptando conexiones en el puerto predeterminado:

tcp    0    0    127.0.0.1:5432    0.0.0.0:*    LISTEN
3561/postgres

Cuando intento conectarme a este servidor PostgreSQL desde una computadora remota en la misma red local, aparece este mensaje de error:

El servidor no escucha

El servidor no acepta conexiones: la biblioteca de conexiones informa

no se pudo conectar al servidor: Conexión rechazada ¿El servidor se está ejecutando en el host "10.0.1.7" y acepta conexiones TCP / IP en el puerto 5432?

Utilicé postgrescomo nombre de usuario y sin contraseña. Pero también lo he intentado con postgrescontraseña. En el servidor local puedo iniciar sesión usando:

sudo -u postgres psql postgres

¿Cómo puedo conectarme a una base de datos PostgreSQL que se ejecuta en Ubuntu desde una máquina remota usando pgAdmin3?

Jonas
fuente

Respuestas:

25

La línea en su informe de netstat muestra que la base de datos solo está escuchando en localhost: 5432 (127.0.0.1) las conexiones tcp entrantes.

Proto Recv-Q Send-Q Local Address   Foreign Address  State   PID/Program name
tcp        0      0 127.0.0.1:5432  0.0.0.0:*        LISTEN  3561/postgres

Por lo tanto, solo puede aceptar conexiones tcp locales independientemente de los permisos que haya especificado en pg_hba.conf. pg_hba.conf solo especifica las conexiones permitidas, pero no especifica qué interfaces escuchará su servicio.

Las direcciones en las que escucha el servidor se especifican con el GUC listen_addresses en postgresql.conf . Si desea que el servidor escuche las conexiones remotas, debe especificar la (s) ip (s) en la que desea que escuche o *que escuche en todas las interfaces disponibles en el host.

Para que su servidor postgresql escuche en todas las interfaces en el host, debe tener la siguiente línea en postgresql.conf:

listen_addresses = '*'
dbenhur
fuente
pero ya he especificado allen el pg_hba.confarchivo ... por lo que debería aceptar conexiones de todas las direcciones IP.
Jonas
Quizás podría haberlo dicho más claramente. pg_hba no especifica qué escucha la base de datos, solo qué conexiones de protocolo / db / user / remote-addr están permitidas.
dbenhur 01 de
Ok, entonces, ¿cómo soluciono esto? ¿Tienes alguna sugerencia?
Jonas
1
lo arreglas poniendo una línea listen_addresses = '*'en postgresql.conf y reiniciando tu servidor.
dbenhur 01 de
Gracias, esto resolvió este problema. Ahora tengo problemas con la contraseña predeterminada :(
Jonas