Tengo una base de datos PostgreSQL simple ejecutándose en una instancia EC2.
ubuntu@ip-172-31-38-xx:~$ service postgresql status ● postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Fri 2020-06-19 14:04:12 UTC; 7h ago Main PID: 11065 (code=exited, status=0/SUCCESS) Tasks: 0 (limit: 1152) CGroup: /system.slice/postgresql.service Jun 19 14:04:12 ip-172-31-38-xx systemd[1]: Starting PostgreSQL RDBMS... Jun 19 14:04:12 ip-172-31-38-xx systemd[1]: Started PostgreSQL RDBMS. ubuntu@ip-172-31-38-xx:~$ psql -U postgres Password for user postgres: psql (10.12 (Ubuntu 10.12-0ubuntu0.18.04.1)) Type "help" for help. postgres=# SELECT * postgres-# FROM pg_settings postgres-# WHERE name = 'port'; name | setting | unit | category | short_desc | extra_desc | context | vartype | source | min_val | max_val | enumvals | boot_val | reset_val | sourcefile | sourceline | pending_restart ------+---------+------+------------------------------------------------------+------------------------------------------+------------+------------+---------+--------------------+---------+---------+----------+----------+-----------+-----------------------------------------+------------+----------------- port | 5432 | | Connections and Authentication / Connection Settings | Sets the TCP port the server listens on. | | postmaster | integer | configuration file | 1 | 65535 | | 5432 | 5432 | /etc/postgresql/10/main/postgresql.conf | 63 | f (1 row)El único grupo de seguridad que está asociado con esta instancia EC2 tiene reglas de entrada abiertas:
5432, TCP, 0.0.0.0/0Pero cuando uso un cliente para conectarme a esta base de datos con el nombre de host correcto (IP/DNS pública), el número de puerto, el nombre de la base de datos, el nombre de usuario y la contraseña ingresados, siempre dice:
could not connect to server: Connection refused, is the server running on host "ec2-dns.com(172.public.ip)" and accepting TCP/IP connections on port 5432?Muy bien, lo he descubierto a partir de esta respuesta .
Dos cosas que hice para permitirme conectarme (exactamente desde el enlace de arriba, lo estoy duplicando aquí por conveniencia):
sudo vi /etc/postgresql/10/main/pg_hba.confinmediatamente debajo de esta línea:
host all all 127.0.0.1/32 md5
agregó esta línea:
host all all 0.0.0.0/0 md5
sudo vi /etc/postgresql/10/main/postgresql.conf encuentre una línea que comience con esto: #listen_addresses = 'localhost'
Descomente la línea eliminando el # y cambie 'localhost' a '*'.
La línea ahora debería verse así:
listen_addresses = '*' # what IP address(es) to listen on;.
luego reinicie su servicio:
sudo service postgresql restart
entonces debería poder conectarse a su base de datos a través de un cliente SQL.
¿Está seguro de que PostgreSQL está escuchando la dirección IP y el número de puerto que está utilizando como parámetros de host y puerto? Pruebe modificando su archivo postgresql.conf y reiniciando el servidor.
sudo nano /etc/postgresql/{YOUR_POSTGRES_VERSION}/main/postgresql.confAhora continúe y busque la configuración de conexión y actualice los siguientes valores.
listen_addresses = {YOUR_IP_ADDRESS} port = {YOUR_PORT_NUMBER}Ahora guarde el archivo y reinicie el servidor postgresl:
sudo systemctl restart postgresConsulte la documentación aquí: