web-dev-qa-db-fra.com

Essayer de configurer postgres pour ror app, obtenir une erreur - fe_sendauth: aucun mot de passe fourni

Obtenir:

An error has occurred:

Error connecting to the server: fe_sendauth: no password supplied

Les paramètres définis dans database.yml sont identiques à ceux de la configuration de l'application sur d'autres ordinateurs.

Comment puis-je configurer les choses de manière à ne pas avoir besoin d'un mot de passe codé en dur?

Je peux voir la base de données ok en utilisant PgAdmin-III.

Je préférerais ne pas avoir le mot de passe dans database.yml, car les autres machines utilisant cette application n'en ont pas/en ont besoin, il semble donc y avoir quelque chose à propos de mon installation Pg.

26
Michael Durrant

Vous devez changer votre changement de votre pg_hba.conf. Voici un exemple de la mienne:

pg_hba.conf:

TYPE  DATABASE        USER            ADDRESS                 METHOD

Host    all             all             127.0.0.1/32            trust

Host    all             PC             127.0.0.1/32            trust

Host    all             all             ::1/128                 trust

Notez que trust signifie que toute personne sur address (dans ce cas localhost) peut se connecter en tant qu'utilisateur répertorié (ou dans ce cas, tout utilisateur de son choix). Cela ne convient vraiment que pour les configurations de développement avec des données sans importance. Ne pas utiliser ceci en production .

62
Rodrigo Zurek

@ rodrigo-zurek était sur place; vous devez changer le pg_hba.conf. Je veux juste ajouter cette réponse aux utilisateurs OSX car le pg_hba.conf est situé à un endroit différent par défaut.

Sudo su - postgres
vim /Library/PostgreSQL/<YOUR_VERSION>/data/pg_hba.conf

La valeur par défaut aura md5 dans la colonne METHOD, mais remplacera toutes celles par trust:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
Host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
Host    all             all             ::1/128                 trust

Ouvrez ensuite pgAdmin III dans votre répertoire Applications/PostgreSQL 9.X, cliquez avec le bouton droit de la souris sur la base de données (par exemple, PostgreSQL 9.4 (localhost)), puis cliquez sur Reload Configuration. Après cela, j'ai pu rake db:create.

10
Jack

Pas de mot de passe fourni signifie que vous l'avez configuré pour exiger une authentification par mot de passe et qu'aucun mot de passe n'est fourni. Voici la documentation pour 9.0: http://www.postgresql.org/docs/9.0/static/auth-methods.html

Gardez à l'esprit que l'authentification locale est passée de "ident" à "homologue" en 9.1 pour éviter toute confusion. Voir la documentation 9.1 à http://www.postgresql.org/docs/9.1/static/auth-methods.html

Gardez également à l'esprit qu'il s'agit d'un ensemble de règles ordonnées avec une règle de premier match. De plus, local et localhost sont différents. Local est destiné aux connexions socket de domaine UNIX locales, tandis que Host localhost serait destiné aux connexions réseau à localhost. Il semble donc que vous ayez quelques problèmes à résoudre, mais j'espère que les documents devraient vous aider.

0
Chris Travers
#appveyor.yml
services: postgresql
test_script:
  - SET PGUSER=postgres
  - SET PGPASSWORD=Password12!
  - PATH=C:\Program Files\PostgreSQL\9.6\bin\;%PATH%
0
Alexey Strizhak