【问题标题】:FATAL: Peer authentication failed for user "rails"致命:用户“rails”的对等身份验证失败
【发布时间】:2016-03-01 07:26:41
【问题描述】:

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

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

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

环境正在生产中,我必须手动强制执行,因为应用程序在启动时正在开发中,并且强制它在 config/environments.rb 中进行更改不起作用。

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

这个问题是我在使用 postgres 经历了很多磨难并尝试在后端建立数据库之后得出的,所以我需要完成一些事情。

非常感谢。

【问题讨论】:

  • 就我而言,我忘记在database.yml 中指定主机,即localhost。默认情况下,PG 配置为接受来自localhost127.0.0.1 的所有调用

标签: ruby-on-rails ruby database postgresql role


【解决方案1】:

问题在于您的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

您可以将其更改为md5trust

# TYPE  DATABASE        USER    ADDRESS             METHOD

# "local" is for Unix domain socket connections only
local    all             all                        trust

它将解决您的问题。

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

【讨论】:

  • 解决了这个问题。不过,这在安全性方面是不是倒退了一步?
  • 不适合我...是否需要重新启动 PosgreSql 服务器?
  • 是的,有时您还需要重新启动系统。在从未使用过的 postgres 9.4 版本中,我有经验我们不需要进行任何此类设置
  • @DipakG。你能告诉我从终端编辑这个文件后如何保存更改吗?我有同样的问题我正在尝试,但我的文件没有保存我的更改
  • 要保存此文件,您必须具有 sudo 访问权限。您可以在 vim 或 gedit 编辑器中打开文件。 sudo vi /etc/postgresql/9.3/main/pg_hba.confsudo gedit /etc/postgresql/9.3/main/pg_hba.conf。 gedit 提供可视化界面,所以使用 gedit 命令。如果您需要任何其他帮助,请告诉我。
猜你喜欢
  • 2012-04-16
  • 2013-07-23
  • 2013-06-30
  • 2013-02-24
  • 2018-10-09
  • 2015-08-29
  • 2015-02-17
  • 2011-02-25
  • 1970-01-01
相关资源
最近更新 更多