致命:用户"rails"的对等身份验证失败

Jac*_*ard 5 ruby database postgresql ruby-on-rails role

我正在尝试db:create在DigitalOcean服务器上使用postgresql 运行rake .

但是,它返回错误Peer authentication failed for user "rails",指的config/database.yml是存储登录凭据的位置

奇怪的是,当我通过SSH登录服务器时,这些是以纯文本显示给我的确切凭据.我已经尝试了两个,<%= ENV['APP_DATABASE_PASSWORD'] %>并以纯文本显示给我的密码,同样的事情发生了.

环境正在生产中,我必须手动强制执行,因为应用程序在启动时处于开发状态并且强制它进行更改config/environments.rb无法正常工作.

如果我不得不猜测我可能会说环境中发生了一些有趣的事情,因为DigitalOcean将继续提供该网站的缓存版本,直到服务器重新启动,并且它可能仍然认为它正处于开发阶段.但是在我弄清楚如何在启动时强制它投入生产之前,我会陷入困境.

这个问题就是我在经历了很多与postgres的苦难并试图在后端建立数据库后得到的,所以我需要经历几件事.

非常感谢.

Dip*_*pta 13

问题在于您的pg_hba.conf文件.你可以在哪找到/etc/postgresql/9.3/main/pg_hba.conf.这里9.3是postgres版本,你可以改变你的postgres版本.有关身份验证的更多细节是这里.

你有类似的代码:

# TYPE  DATABASE        USER    ADDRESS             METHOD

# "local" is for Unix domain socket connections only
local    all             all                        peer
Run Code Online (Sandbox Code Playgroud)

您可以将其更改为md5trust.

# TYPE  DATABASE        USER    ADDRESS             METHOD

# "local" is for Unix domain socket connections only
local    all             all                        trust
Run Code Online (Sandbox Code Playgroud)

它会解决你的问题.

注意:要编辑pg_hba.conf文件,您应该在服务器上具有sudo权限.