试图为ror app设置postgres,收到错误 – fe_sendauth:没有提供密码

获得:

An error has occurred: Error connecting to the server: fe_sendauth: no password supplied 

database.yml中的设置与其他计算机上的应用程序设置相同。

如何设置以便我不需要硬编码的密码?

我可以使用PgAdmin-III查看db ok。

我宁愿没有database.yml的密码,因为使用这个应用程序的其他机器没有/需要它,所以它似乎可能与我的Pg安装有关。

您需要更改pg_hba.conf的更改。 这是我的一个例子:

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 

请注意, trust意味着address上的任何人(在本例中为localhost)可以作为列出的用户(或者在这种情况下是他们选择的任何用户)进行连接。 这实际上仅适用于具有不重要数据的开发配置。 不要在生产中使用它

@ rodrigo-zurek当场亮相; 你必须改变pg_hba.conf 。 只想为OSX用户添加这个答案,因为默认情况下pg_hba.conf位于不同的位置。

 sudo su - postgres vim /Library/PostgreSQL//data/pg_hba.conf 

默认情况下,在METHOD列中将使用md5 ,但将所有信息替换为:

 # 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 

然后,在Applications / PostgreSQL 9.X中打开pgAdmin III,右键单击数据库(例如PostgreSQL 9.4 (localhost) ),然后单击Reload Configuration 。 在此之后,我能够rake db:create

没有提供密码意味着您已将其设置为需要密码validation且未提供密码。 以下是9.0的文档: http : //www.postgresql.org/docs/9.0/static/auth-methods.html

请记住,9.1中的本地身份validation已从“ident”更改为“peer”以避免混淆。 请参阅http://www.postgresql.org/docs/9.1/static/auth-methods.html上的9.1文档

另请注意,这是一个带有第一个匹配控制的有序规则集。 此外,本地和本地主机是不同的。 Local用于本地UNIX域套接字连接,而host localhost用于到localhost的网络连接。 所以听起来你有一些故障排除要做,但希望文档应该有所帮助。

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