web-dev-qa-db-fra.com

PostgreSQL fe_sendauth: aucun mot de passe fourni

Je sais qu'il existe des milliers de questions comme celle-ci ici sur SO, mais je les ai toutes vues et je ne suis toujours pas en mesure de régler mon problème.

Je fais tout en utilisant ansible, donc c'est assez automatisé, mais voici mes fichiers:

pg_hba.conf

local   all             all                                     trust
Host    all             all             127.0.0.1/32            md5
Host    all             all             ::1/128                 md5
Host    all             all             10.11.12.0/24           md5

database.yml

production:
  database: my_db
  adapter: postgresql
  Host: localhost
  username: deploy
  encoding: unicode
  min_messages: WARNING
  template: template0

Et j'ai créé un utilisateur deploy (et un utilisateur postgres sans mot de passe) dans mon système. Et maintenant, bien que je sois totalement capable de me connecter à postgres depuis bash en utilisant psql -d my_db (sur le serveur), je ne peux pas me connecter à la base de données avec mon application Rails. Lancer rake db: migrateMigration me donne 

PG::ConnectionBad: fe_sendauth: no password supplied

Je suis assez terrible pour être un devop et je me bats avec ce problème depuis la veille du matin d'hier et il est toujours là, donc s'il y a quelqu'un qui peut m'aider avec ça, je serais plus que reconnaissant.

20
mbajur

psql utilise une connexion socket locale, Rails utilise localhost sur TCP/IP. Local est approuvé, localhost requiert un mot de passe (utilisant md5). Vous pouvez configurer un fichier pgpass pour votre utilisateur Rails: http://www.postgresql.org/docs/current/static/libpq-pgpass.html

13
Frank Heikens

En C vous pouvez le faire comme ça, je ne sais même pas ce que Rails est

conninfo = "hostaddr = 127.0.0.1 dbname = bitcoin user = alan password = mypass";
conn = PQconnectdb(conninfo);

J'ai eu exactement le même message d'erreur.

0
Alan Corey