我试图在DigitalOcean服务器上使用postgresql运行rake db:create
。
但是,它返回错误Peer authentication failed for user "rails"
,指的是存储登录凭据的config/database.yml
奇怪的是,当我通过SSH登录服务器时,这些是以纯文本显示给我的确切凭据。我已经尝试了<%= ENV['APP_DATABASE_PASSWORD'] %>
和以纯文本显示给我的密码,同样的事情发生了。
环境正在生产中,我必须手动强制执行,因为应用程序在启动时处于开发状态并且强制它在config/environments.rb
中进行更改无法正常工作。
如果我不得不猜测我可能会说环境会发生一些有趣的事情,因为DigitalOcean将继续提供该网站的缓存版本,直到服务器重新启动,它仍然可能认为它正在开发中就它而言。但是,在我弄清楚如何在启动时强制将其投入生产之前,我就是一个捕获22。
这个问题是我在经历了很多苦难后尝试在后端设置数据库时所得到的,所以我需要完成一些事情。
非常感谢。
答案 0 :(得分:13)
问题在于您的pg_hba.conf
文件。你可以在/etc/postgresql/9.3/main/pg_hba.conf
找到。这里9.3是postgres版本,你可以改变你的postgres版本。有关身份验证的更多详细信息是here。
您的代码类似于:
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all peer
您可以将其更改为md5
或trust
。
# TYPE DATABASE USER ADDRESS METHOD
# "local" is for Unix domain socket connections only
local all all trust
它会解决您的问题。
注意:要编辑pg_hba.conf
文件,您应该在服务器上拥有sudo权限。