web-dev-qa-db-fra.com

Erreur SQLAlchemy sans mot de passe fourni

C'est probablement une erreur stupide mais je n'arrive pas à trouver une solution satisfaisante.

Lors de l'exécution de db.create_all(), j'ai eu l'erreur suivante.

sqlalchemy.exc.OperationalError: (OperationalError) fe_sendauth: no password supplied  None None

Mon lien de base de données est défini comme

'postgresql://localhost/db_name'

Cela a bien fonctionné sur mon Mac et Heroku, mais ce n'est pas OK sur Ubuntu (Digitalocean).

Des idées sur ce que je pourrais faire de mal?

35
yifanwu

Vous avez probablement juste besoin de supprimer "localhost" de votre chaîne de connexion:

'postgresql:///db_name'

Cela indique à psycopg2 d'utiliser des sockets de domaine Unix. Votre configuration par défaut utilisera "ident" afin que vous vous connectiez en tant qu'utilisateur exécutant le script. Dans la configuration par défaut, "md5" s'applique uniquement aux connexions TCP.

58
Danny W. Adair

Le modèle d'URL doit être:

postgresql://user:password@localhost:5432/database_name

pip installer psycopg2
l'utilisateur doit être postgres ou tout autre utilisateur que vous avez créé et que vous avez l'intention d'utiliser

de même pour mySql ce serait:

mysql://user:pass@localhost:3306/database_name

installer pip mysql-python

18
omokehinde igbekoyi

Sur votre Mac, PostgreSQL a été configuré pour l'authentification trust ou peer pour les connexions depuis localhost.

Sur votre boîte Ubuntu, il est configuré pour md5 authentification pour les connexions depuis localhost.

Vous voudrez configurer un mot de passe ou changer le mode d'authentification. Voir pg_hba.conf , et le guide Ubuntu pour PostgreSQL .

4
Craig Ringer