【问题标题】:Rails + Postgres fe_sendauth: no password suppliedRails + Postgres fe_sendauth:未提供密码
【发布时间】:2012-12-03 19:21:12
【问题描述】:

您好,我正在尝试将 postgresql 连接到我的 rails 项目。我正在学习测试,但由于密码不正确的 postgresql 错误,我的测试没有运行:

Edmunds-MacBook-Pro:langexchange edmundmai$ rake test:units
rake aborted!
fe_sendauth: no password supplied

我已经阅读过,我的 pg_hba.conf 文件原本是这样的:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     edmundmai  

这是我的 rails 项目中的 database.yml 文件

default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  username: edmundmai
  password: 

development:
  <<: *default
  database: project_development

test:
  <<: *default
  database: project_test

production:
  <<: *default
  database: project_production

有谁知道我该如何解决这个问题?如果方便的话,我们可以聊天。

【问题讨论】:

    标签: ruby-on-rails postgresql


    【解决方案1】:

    确保您已在生产托管服务器上定义了 RAILS_ENV 和 RACK_ENV。除了rake 之外,我遇到了一个类似的问题,解决方案是将 RACK_ENV=production 添加到我的环境中。 RAILS_ENV 已设置为生产。

    export RACK_ENV=production

    bundle exec rake db:version

    您应该会看到一些输出,例如:

    Current version: 20121126151935

    解决方案:确保您的 Rails 应用可以访问 RAILS_ENV 和 RACK_ENV 环境变量。另外,请确保它们的值相同。

    【讨论】:

    • 谢谢!刚刚从 capistrano 切换到另一个部署解决方案。显然,capistrano 在后台处理 RACK_ENV 和 RAILS_ENV。我想如果没有所有的魔法,我会学到更多。 :D
    • @Edmund,让这个答案成为公认的答案会很棒。它比上面的答案有更多的赞成票:)
    • export RACK_ENV=production 对我有用,但是我正在使用带有 Apache 的Passenger,并且根据文档,Passenger 已经在设置 ​​RACK_ENV=production?这是我的集成测试机器,所以我不想设置全局 RACK_ENV,感觉好像我错过了什么。
    【解决方案2】:

    首先你应该改变:

    local   all             all                                     trust
    

    到:

    local   all             all                                     md5
    

    然后,您应该在 PostgreSQL 中使用 usernamepassword 创建一个 super_user,然后将新用户的 usernamepassword 添加到您的 database.yml 文件中。 p>

    要创建新的super_user,打开Pg Admin III 并右键单击底部的Login Roles 以创建新的超级用户。

    【讨论】:

    • 嘿,基恩。我在哪里可以找到 Pg Admin III?我以前从未听说过,你能教我怎么做吗
    • 你安装了 PostgreSQL 吗?安装后,您将拥有该工具。在您的应用中搜索。
    • 是的,我使用自制软件安装 postgres。我在哪里可以找到 Pg Admin III?
    • 我想我找到了。这是我电脑里的程序吧?但我没有看到您所说的登录角色按钮。
    • 是的,它在您的计算机中。双击本地(localhost)服务器并滚动到底部,您将看到它。
    【解决方案3】:

    在您的本地计算机上的database.yml 文件的testdevelopment 部分下,您应该将username 更改为您的登录用户名。 rails 生成器使其与您的应用程序名称相同,并且无法正常工作。 production 部分将取决于您的生产设置。如果您使用 heroku,则无需更改任何内容。

    【讨论】:

      【解决方案4】:

      您只需要使用 pgadmin 在 postgres 中创建用户/密码和模式(db),并将用户/密码放在 database.yml 中。当我尝试在当前的 rails 项目文件夹中使用 rake db:create 创建数据库时,它失败了,并提示我错误无法为 postgreSQL 适配器创建。之后我用 pgadmin 创建了 rails 项目的模式,一切都很好,pg_hba.conf 没有任何变化。

      【讨论】:

        猜你喜欢
        • 2021-05-29
        • 2016-02-03
        • 2013-08-02
        • 1970-01-01
        • 1970-01-01
        • 2014-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多