Necesito acceder a una base de datos postgresql desde una máquina remota en un VPS en DigitalOcean con 12.10 y postgresql 9.1.
¿Cómo hago esto? Noté que el puerto 5432 está cerrado, ¿cómo abro esto?
Necesito acceder a una base de datos postgresql desde una máquina remota en un VPS en DigitalOcean con 12.10 y postgresql 9.1.
¿Cómo hago esto? Noté que el puerto 5432 está cerrado, ¿cómo abro esto?
Respuestas:
Para abrir el puerto 5432 edite su /etc/postgresql/9.1/main/postgresql.conf
y cambie
listen_addresses='localhost'
a
listen_addresses='*'
y reinicie su DBMS
invoke-rc.d postgresql restart
ahora puedes conectarte con
$ psql -h hostname -U username -d database
Si no puede autenticarse, debe otorgarle a su usuario derechos de acceso a su base de datos.
Edita tu
/etc/postgresql/9.1/main/pg_hba.conf
y añadir
host all all all md5
(Esto es para un acceso abierto. Para un control más estricto, consulte la documentación de pg_hba.conf y ajústelo según sus necesidades).
De aquí en adelante también necesitarás una recarga
invoke-rc.d postgresql reload
No necesito mencionar que esta es una configuración básica, ahora debería pensar en modificar su firewall y mejorar la seguridad de su DBMS.
host <database> <user> <remote_client_IPaddress>/24 md5
Esto ya no funciona, si alguna vez lo hizo:
alojar todos todos * md5
Las líneas correctas posibles para esto son:
alojar todos todos 0.0.0.0/0 md5 # rango ipv4
host all all :: 0/0 md5 # rango ipv6
host todos todos todos md5 #todos ip
host all all all md5
¿funcionará bien? ¿Es correcto? algun problema de seguridad?
La respuesta más votada y aceptada tiene graves implicaciones de seguridad. Este método está deshabilitado de forma predeterminada por buenas razones.
Utilice mejor el reenvío de puertos locales con ssh
:
ssh -L local_port:localhost:foreign_port user@server
Comience el reenvío de puertos:
ssh -L 5432:localhost:5432 user@your-server.com
#or
ssh -L 5432:127.0.0.1:5432 user@your-server.com
(Cambie los puertos locales y extranjeros para adaptarse a su configuración).
Luego puede conectarse directamente a la base de datos desde su computadora local:
psql -U db_user -p local_port -l