2011-05-27 40 views
28

Tengo un servidor de base de datos (192.168.1.50) que ejecuta postgres. Creé una base de datos llamada "testdb" y un usuario "testuser" con la contraseña "testuserpw".
localmente, puedo conectar a la base de datos usando:No se puede conectar a postgres desde el host remoto

psql -d testdb -U testuser 

Cuando emita el comando de otro huésped (192.168.1.60):

psql -h 192.168.1.50 -d testdb -U testuser 

tengo el error:

psql: could not connect to server: Connection refused 
Is the server running on host "192.168.1.50" and accepting 
TCP/IP connections on port 5432? 

¿Alguna idea?

Respuesta

43

Compruebe la configuración de listen_addresses en su archivo postgresql.conf. Muchas distribuciones lo hacen predeterminado a 127.0.0.1, es decir, solo escucha las conexiones que llegan desde localhost. Se debe establecer en '*' para escuchar las conexiones en todas las interfaces.

Si aún tiene problemas, use lsof para ver qué sockets de red está escuchando el proceso postgres.

+3

Como nota, también hay un archivo de configuración pg_hba.conf en el que se pueden configurar las propiedades de confianza para máquinas específicas. – OleTraveler

+2

Se debe establecer en ''*''.Tal vez esto le ahorrará a alguien uno o dos minutos. – Kolyunya

3

¿El firewall está permitiendo el paso de las conexiones? O bien, verifique si pg_hba.conf le permite conectarse desde direcciones que no sean localhost.

5

En Ubuntu, noté que el acceso remoto en algún momento dejó de funcionar (actualmente usa 9.1.9). La razón es que Postgres ya no se inicia con el modificador -i [1], por lo que no importa lo que configure para listen_addresses, se ignorará.

Afortunadamente, añadiendo la siguiente línea a /etc/environment resuelve el problema después de salir de la sesión y de nuevo (o reiniciar):

PGOPTIONS="-i" 

Ver [2] para más opciones. Tenga en cuenta que agregar esto a /etc/postgresql/9.1/main/environment NO funcionó para mí.

Ahora, al hacer nmap ip-of-my-remote-server que finalmente sale este nuevo:

5432/tcp open postgresql 

Yay!

[1] http://www.postgresql.org/docs/9.1/static/runtime-config-short.html

[2] http://www.postgresql.org/docs/9.1/static/libpq-envars.html

+0

También estoy ejecutando 9.1.9 en Ubuntu 13.04 y este paso no parece ser necesario. –

+0

Encontré que tenía que reemplazar las comillas dobles con comillas simples y funcionó muy bien en el archivo de entorno específico postgresql. Además, debe usar 'stop' y 'start' (en lugar de una simple recarga) cuando ejecuta /etc/init.d/postgresql después de hacer este cambio. – mdpatrick

1

El configvar listen_address en postgresql.conf no es la única manera de conseguir postgres para escuchar en la dirección IP no local (o direcciones).

Utilice la opción "-o -h *" si inicia postgres desde pg_ctl, de lo contrario agregue "-h" "*" a la línea de comando de postgres, como p. Ej.

/usr/datos locales/pgsql/bin/postgres -D/pg/"H" "*"

Por supuesto/pg/datos deben ser cambiados a su trayectoria de datos actual.

Esto es especialmente útil cuando se experimenta.

Cuestiones relacionadas