【问题标题】:Ruby on Rails | Postgresql ignores my password in database.ymlRuby on Rails | Postgresql 忽略我在 database.yml 中的密码
【发布时间】:2011-07-29 14:42:23
【问题描述】:

开始在 Ubuntu 上使用 postgresql 开发我的第一个 Ruby on Rails 应用程序。我创建了一个带有密码的 postgresql 用户。在 database.yml 中,我输入了 postgresql 用户名和密码。

每当我运行 rake db:migrate 时,无论我在 database.yml 中将密码更改为什么,它都会毫无错误地执行 - 即使密码字段为空。如果我更改用户名,我会收到身份验证错误。

如何让 Ruby on Rails 数据库使用密码?

TIA

【问题讨论】:

  • database.yml 文件是什么样的? postgre 中的密码对我有用。

标签: ruby-on-rails postgresql


【解决方案1】:

您可能正在使用ident 甚至trust 身份验证。最常见的身份验证方法的简要概述:

  • trust - 无论如何都可以登录。
  • ident - 如果您的 UNIX 用户名与 PostgreSQL 用户名相同,则可以登录。
  • md5 - 如果您的密码(使用md5 加密)正确,您可以登录。

编辑: PostgreSQL 9.0 引入了peer 身份验证方法。据我所知,identpeer 具有相同的目的——你的登录名由你的操作系统用户名决定——但ident 与侦听端口 113 的 ident 服务器通信,而peer 使用一个系统调用。见http://www.postgresql.org/docs/9.1/static/auth-methods.html#AUTH-IDENT

找到您的 pg_hba.conf 文件,看看您是否能找到如下所示的内容:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD

# "local" is for Unix domain socket connections only
local   all         all                               ident
# IPv4 local connections:
host    all         all         127.0.0.1/32          md5
# IPv6 local connections:
host    all         all         ::1/128               md5

当您尝试连接时,PostgreSQL 会逐行执行此操作。如果连接类型(例如localhost)、数据库、用户(数据库用户,而不是系统用户)和地址都匹配,它将使用给定的身份验证方法。

如果您想要求密码才能访问您自己的 PostgreSQL 用户,您可以在 顶部local all all ident 行之前添加这样一行:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   mydbname    myusername                        md5

更改pg_hba.conf后一定要重启PostgreSQL。

【讨论】:

  • 非常有帮助,谢谢。我创建了一个特定于项目的 DB 用户,发现我需要授予 projectusername MD5 对默认 postgres 数据库以及三个 Rails 数据库的访问权限。这允许rake db:create:all(在 Rails 3.1 下)创建 Rails 数据库。我写了详细信息here
【解决方案2】:

我只很少使用 PostgreSQL,但我知道它有一个名为 sameuser 的功能。如果系统用户名与数据库用户名匹配,则不需要密码。因此,如果我使用用户名“matchu”登录到这台计算机,并且 PostgreSQL 中有一个名为“matchu”的用户,我可以登录到该数据库用户而无需额外的身份验证。

这是怎么回事?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-03
    • 2023-03-04
    • 2012-01-19
    • 1970-01-01
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多