Lorsque j’exécute heroku db: pull, il trouve mon dev db local à:
postgres://127.0.0.1/myapp_development?encoding=utf8
une fois que je confirme cependant, cela échoue avec:
Sequel::DatabaseConnectionError -> PGError: fe_sendauth: no password supplied
J’ai essayé de lancer le pull avec la firebase database locale spécifiée, par exemple
heroku db:pull postgres://root:@localhost/db_name
qui donne la même erreur sans mot de passe fourni.
Je pensais que je devrais peut-être changer de root: myname: car c’est l’utilisateur auquel j’ai octroyé les droits de super-utilisateur lorsque je configure postgres mais pas root: ou myname: works
Mon database.yml a un nom d’utilisateur: et un mot de passe: vide pour toutes les bases de données spécifiées.
À partir de la ligne de commande en tant que myname @ ubuntu, je peux taper psql myapp_development et me connecter correctement et exécuter des sélections.
Qu’est-ce que j’oublie ici?
Est-ce lié à mes parameters pg_hba.conf? J’ai jeté un coup d’oeil à l’intérieur de ça et ça dit:
# Database administrative login by UNIX sockets local all postgres ident # TYPE DATABASE USER CIDR-ADDRESS METHOD # "local" is for Unix domain socket connections only local all all ident # IPv4 local connections: host all all 127.0.0.1/32 md5 # IPv6 local connections: host all all ::1/128 md5
Devrait-on “faire confiance” là-bas? Et si oui, si je modifie ce fichier, dois-je redémarrer postgres? Et si “trust” est nécessaire, comment se fait-il que les rails et les outils de ligne de commande psql fonctionnent sans mot de passe lorsqu’ils sont connectés en tant qu’utilisateur myname?
Je vous remercie!
La méthode d’ trust
peut faire l’affaire, mais comme vous le savez sans doute, ce n’est pas sécurisé.
Après avoir édité pg_hba.conf
, vous n’avez pas besoin de redémarrer. Un reload
suffit (en citant le manuel ):
Le fichier
pg_hba.conf
est lu au démarrage et lorsque le processus du serveur principal reçoit un signal SIGHUP. Si vous éditez le fichier sur un système actif, vous devrez signaler au postmaster (en utilisantpg_ctl
reload oukill -HUP
) pour le relire le fichier.
pg_ctl reload
Voir le bon manuel . Vous pourriez avoir besoin du manuel pour la version 8.3 . La firebase database partagée sur heroku fonctionne actuellement sur PostgreSQL 8.3. (De plus, je doute que vous ayez access à pg_ctl sur heroku.)
Soyez conscient de ceci :
Si aucun mot de passe n’a été défini pour un utilisateur, le mot de passe stocké est null et l’ authentification par mot de passe échouera toujours pour cet utilisateur.
Accent mis à moi. Vous pourrez peut-être vous connecter localement, car l’ auth-methods ident
ou peer
permet. Mais pour votre objective, vous pouvez avoir besoin d’ un mot de passe!