无法通过ActiveRecord获得Postgres连接

时间:2018-01-16 13:28:10

标签: ruby-on-rails postgresql activerecord

为了主,我无法理解为什么postgres抱怨密码认证(使用ActiveRecord)。

sudo -u postgres psql rdb 

这项工作(不要求密码)

local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

但是当与像ActiveRecord这样的ORM连接时,它会抱怨。

ActiveRecord::Base.establish_connection(adapter: 'postgresql', username: 'postgres', database: 'rdb')
 The server requested password-based authentication, but no password was provided.

这是一个基本的设置,我希望它能一直工作。我的最后一招是允许trustmd5(在pg_hba.conf上),但在我向前推进之前,请向我提供一些指针,说明上述原因无效。

只是更新postgres正在localhost

运行

1 个答案:

答案 0 :(得分:0)

sudo命令触发local all postgres peer限制,而不是要求输入密码。使用postgresql适配器的ActiveRecord配置使用:

  

:host - 默认为/ tmp中的Unix域套接字。在没有的机器上   Unix域套接字,默认是连接到localhost。

你的机器上有插座吗? /tmp可写吗?可能是使用与127.0.0.1的TCP连接,触发md5所示的密码检查。