with error conectar con python django postgresql psycopg2 django-settings

python - conectar - Configuración de Django: psycopg2.OperationalError: FATAL: la autenticación de pares falló para el usuario "indivo"



error loading psycopg2 module: no module named ''psycopg2'' (4)

Tengo problemas en la configuración del proyecto Django con POSTGRESQL.

Aquí está mi configuración de la base de datos setting.py

DATABASES = { ''default'':{ ''ENGINE'':''django.db.backends.postgresql_psycopg2'', # ''.postgresql_psycopg2'', ''.mysql'', or ''.oracle'' ''NAME'':''indivo'', # Required to be non-empty string ''USER'':''indivo'', # Required to be non-empty string ''PASSWORD'':''ritvik'', ''HOST'':'''', # Set to empty string for localhost. ''PORT'':'''', # Set to empty string for default. }, }

Ahora en Postgres backend lo que hice fue.

rohit@rohit-desktop:~$ sudo su - postgres postgres@rohit-desktop:~$ createuser --superuser indivo # create a super user indivo postgres@rohit-desktop:~$ psql # open psql terminal psql (9.1.8) Type "help" for help. postgres=# /password indivo # set the password ritvik Enter new password: Enter it again: postgres=# /q #logout postgres@rohit-desktop:~$ createdb -U indivo -O indivo indivo #create db indivo

Lamentablemente, cuando intento sincronizar, recibo el error.

psycopg2.OperationalError: FATAL: Peer authentication failed for user "indivo"

Por favor, ayúdame, ¿qué podría estar haciendo mal aquí?


Por defecto, en muchas distribuciones de Linux, la autenticación del cliente se establece en "par" para las conexiones de socket de Unix al DB. Esto se establece en el archivo de configuración pg_hba.conf para postgresql. La documentación de la biblioteca psycopg2 python indica:

- * host *: dirección de host de la base de datos (por defecto es socket UNIX si no se proporciona)

Entonces, si deja la opción de host en blanco, su script intentará conectarse y usar el nombre de usuario de Unix: contraseña para la autenticación. Para solucionarlo, puede:

  1. establezca explícitamente la opción "host" en 127.0.0.1 en el código de configuración que pegó en su pregunta.
  2. Modifique el archivo pg_hba.conf para usar md5 para conexiones de socket, de modo que use nombres de usuario y contraseñas almacenados en el almacén de usuarios DB postrgres (no recomendado ya que esto puede romper la autenticación para los usuarios del sistema)

Tengo un problema similar y lo resolví con esta respuesta al agregar localhost a la configuración HOST la base de datos en settings.py, por lo que la configuración de su base de datos debería verse así:

DATABASES = { ''default'':{ ''ENGINE'':''django.db.backends.postgresql_psycopg2'', # ''.postgresql_psycopg2'', ''.mysql'', or ''.oracle'' ''NAME'':''indivo'', # Required to be non-empty string ''USER'':''indivo'', # Required to be non-empty string ''PASSWORD'':''ritvik'', ''HOST'':''localhost'', # Set to empty string for localhost. ''PORT'':'''', # Set to empty string for default. }, }


Yo también estaba enfrentando un problema similar durante la configuración de la base de datos postgresql con el proyecto Django.

Mi sistema está ejecutando RHEL CentOS 7 con postgresql versión 10. Busco mucho pero no pude encontrar realmente lo que está sucediendo hasta que vi el registro en /var/lib/pqsql/10/data/log/postgresql*.log

2017-11-10 00: 31: 40.499 IST [14129] DETALLE: Conexión coincidente con pg_hba.conf línea 85: "host all all :: 1/128 ident"

Así que acabo de cambiar esa línea en particular en el archivo /var/lib/pgsql/10/data/pg_hba.conf: del host all all :: 1/128 ident

a

alojar todo :: 1/128 md5

con eso puedo crear una base de datos y una tabla usando manage.py migrate

Gracias a todos los que me han ayudado a encontrar esta solución. especialmente @juliocesar y documentación oficial para la autenticación del cliente postgresql


pg_hba.conf configurar pg_hba.conf para usar la autenticación md5 para el usuario, db e IP de origen de interés. Vea el capítulo de autenticación del cliente de la documentación.

Busque pg_hba.conf en para obtener más información.