PostgreSQL: connection refused

psql: error: connection to server at "db.example.com" (10.0.0.12), port 5432 failed: Connection refused
        Is the server running on that host and accepting TCP/IP connections?

Este error no viene de PostgreSQL — nunca vio la conexión. "Connection refused" es el sistema operativo del host de destino diciendo que nada está escuchando en esa dirección y puerto (o un firewall rechazó activamente el paquete). Esa distinción reduce inmediatamente la búsqueda.

Qué significa este error

Tres modos de fallo en el momento de conectar parecen similares pero significan cosas distintas:

SíntomaSignificado
Connection refusedEl TCP llegó al host, nada escuchando en ese puerto (o firewall REJECT). PostgreSQL no está implicado.
Connection timeoutPaquetes descartados silenciosamente — típicamente un firewall o security group, o el host incorrecto.
no pg_hba.conf entry for host ...llegaste a PostgreSQL; ahora es un problema de configuración de autenticación, otra página del manual.

Así que "Connection refused" significa: lugar incorrecto, puerto incorrecto, o ningún servidor ejecutándose ahí.

Causas comunes

Cómo diagnosticarlo

Desde el cliente:

pg_isready -h db.example.com -p 5432

En el host del servidor:

# ¿El servicio está corriendo?
systemctl status postgresql

# ¿Algo escucha, y en qué dirección/puerto?
ss -lntp | grep -E '5432|postgres'

Si el servicio está caído, la razón del arranque fallido está en los logs (journalctl -u postgresql o el directorio de log de PostgreSQL) — un error tipográfico en postgresql.conf tras una edición es un clásico. Si está corriendo pero enlazado solo a 127.0.0.1, es listen_addresses.

Cómo solucionarlo