Hacer que PostgreSQL acepte la conexión de Python.
Durante los últimos dos días, he estado buscando en Stack Overflow y otros lugares cómo configurar psycopg2. Para asegurarme, estoy intentando conectar Python a PostgreSQL, pero obtengo el siguiente error:
OperationalError: no se pudo conectar al servidor: Conexión rechazada
¿Está el servidor ejecutándose en el host “localhost” (127.0.0.1) y aceptando
conexiones TCP/IP en el puerto 5432?
no se pudo conectar al servidor: No se puede asignar la dirección solicitada
¿Está el servidor ejecutándose en el host “localhost” (::1) y aceptando
conexiones TCP/IP en el puerto 5432?
He cambiado la dirección de escucha para que sea “*”, por lo que debe de haber un problema con el archivo “pg_hba.conf”. Tengo las siguientes conexiones configuradas. Solo me preguntaba, ¿qué tiene de malo estas conexiones? ¿Qué debería cambiar? He buscado en la documentación, en videos, en Stack Overflow durante unas 10 horas, pero nada ha resuelto este problema.
local all all md5
host all all 127.0.0.1/32 ident
host all all my_ip/24 md5 #######
host all all ::1/128 ident
local replication all peer
host replication all 127.0.0.1/32 ident
host replication all ::1/128 ident
davy.ai
Según el mensaje de error que recibiste, parece ser que el servidor de PostgreSQL no está en ejecución o no está configurado para aceptar conexiones TCP/IP en el puerto 5432. Aquí hay algunas cosas que puedes intentar:
ps aux | grep postgres
. Si el servidor está en ejecución, deberías ver algunos procesos con “postgres” en el nombre. Si no está en ejecución, puedes iniciarlo con el siguiente comando:sudo service postgresql start
.Verificar que el puerto esté abierto: Puedes verificar si el puerto está abierto ejecutando el siguiente comando en tu terminal:
sudo lsof -i :5432
. Si el puerto está abierto, deberías ver algunas líneas con “postgres” en el nombre. Si no está abierto, es posible que necesites agregar una línea a la configuración de tu firewall para permitir conexiones entrantes en el puerto 5432.Verificar que los parámetros de conexión sean correctos: Asegúrate de que el host, puerto, nombre de usuario y contraseña sean correctos en tu código de Python. También puedes probar tu conexión utilizando el cliente de línea de comandos
psql
ejecutandopsql -h localhost -U <nombre_usuario> -d <base_datos>
.Revisar los archivos de registro: Si ninguno de los pasos anteriores funciona, puedes revisar los archivos de registro de PostgreSQL para ver si hay algún error o advertencia. Los archivos de registro generalmente se encuentran en el directorio
/var/log/postgresql/
, y puedes ver los últimos registros ejecutando el comandotail -f /var/log/postgresql/postgresql-<versión>-main.log
.En cuanto a tu archivo
pg_hba.conf
, los ajustes que has proporcionado parecen estar bien, suponiendo que tu código de Python esté utilizando una dirección IP dentro de la subredmi_ip
. Sin embargo, puedes considerar utilizar conexiones SSL si te estás conectando a la base de datos a través de una red no segura como Internet. Puedes encontrar más información sobre la configuración de SSL en la documentación de PostgreSQL.</versión>