es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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
Tags:  , , ,

Answer

  1. Avatar for 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:

    1. Verificar que el servidor esté en ejecución: Puedes verificar si el proceso del servidor está en ejecución ejecutando el siguiente comando en tu terminal: 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.
    2. 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.

    3. 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 ejecutando psql -h localhost -U <nombre_usuario> -d <base_datos>.

    4. 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 comando tail -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 subred mi_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>

Comments are closed.