为了主,我无法理解为什么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.
这是一个基本的设置,我希望它能一直工作。我的最后一招是允许trust
或md5
(在pg_hba.conf上),但在我向前推进之前,请向我提供一些指针,说明上述原因无效。
只是更新postgres正在localhost
答案 0 :(得分:0)
sudo
命令触发local all postgres peer
限制,而不是要求输入密码。使用postgresql
适配器的ActiveRecord配置使用:
:host - 默认为/ tmp中的Unix域套接字。在没有的机器上 Unix域套接字,默认是连接到localhost。
你的机器上有插座吗? /tmp
可写吗?可能是使用与127.0.0.1
的TCP连接,触发md5
所示的密码检查。