26

得到:

An error has occurred:

Error connecting to the server: fe_sendauth: no password supplied

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

如何进行设置,以便我不需要硬编码密码?

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

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

4

4 回答 4

62

你需要改变你的改变你的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)上的任何人都可以作为列出的用户(或在本例中为他们选择的任何用户)连接。这实际上只适用于数据不重要的开发配置。不要在生产中使用它

于 2012-09-17T01:48:56.053 回答
11

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

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

默认值将md5在列METHOD中,但将所有这些替换为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

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

于 2015-10-11T19:08:36.727 回答
0

未提供密码意味着您已将其设置为要求密码验证并且未提供密码。这是 9.0 的文档:http ://www.postgresql.org/docs/9.0/static/auth-methods.html

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

还要记住,这是一个有序的规则集,具有第一次匹配管理。此外,本地和本地主机是不同的。Local 用于本地 UNIX 域套接字连接,而主机 localhost 用于到 localhost 的网络连接。因此,听起来您需要进行一些故障排除,但希望文档可以提供帮助。

于 2012-09-17T06:33:57.917 回答
0
#appveyor.yml
services: postgresql
test_script:
  - SET PGUSER=postgres
  - SET PGPASSWORD=Password12!
  - PATH=C:\Program Files\PostgreSQL\9.6\bin\;%PATH%
于 2017-07-16T16:20:51.143 回答