¿Cómo conectarse a una base de datos remota PostgreSQL en Ubuntu usando PGADmin3?
-
22-10-2019 - |
Pregunta
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.conf
tengo 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, eso muestra 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, recibo este mensaje de error:
El servidor no escucha
El servidor no acepta conexiones: la biblioteca de conexión informa
No se pudo conectar al servidor: la conexión rechazada es el servidor que se ejecuta en el host "10.0.1.7" y aceptar conexiones TCP/IP en el puerto 5432?
solía postgres
como nombre de usuario y sin contraseña. Pero también he intentado con postgres
como contraseñ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?
Solución
La línea en su informe NetStat muestra que la base de datos solo está escuchando en LocalHost: 5432 (127.0.0.1) para 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 el servidor escucha se especifica con el escuchar_addresses guc 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 *
para escuchar 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 = '*'