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.
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 .
@ 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
.
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.
#appveyor.yml
services: postgresql
test_script:
- SET PGUSER=postgres
- SET PGPASSWORD=Password12!
- PATH=C:\Program Files\PostgreSQL\9.6\bin\;%PATH%