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:
- establezca explícitamente la opción "host" en 127.0.0.1 en el código de configuración que pegó en su pregunta.
- 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.