Cloud9中的postgresql错误“fe_sendauth:没有提供密码”

时间:2016-04-08 11:29:18

标签: ruby-on-rails postgresql ruby-on-rails-4 cloud9-ide

我想在 Cloud9 中为我的rails应用设置postgresql。

虽然我按了the top voted answer of this post,但在尝试bundle exec rake db:create时出现了以下错误。

fe_sendauth: no password supplied
...
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "username"=>nil, "password"=>nil, "host"=>"0.0.0.0", "database"=>"app_development"}
fe_sendauth: no password supplied
...
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "username"=>nil, "password"=>nil, "host"=>"0.0.0.0", "database"=>"app_test"}

的database.yml

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  username: <%= ENV['USERNAME'] %>
  password: <%= ENV['PASSWORD'] %>
  host:     <%= ENV['IP'] %>

development:
  <<: *default
  database: app_development

test:
  <<: *default
  database: app_test

production:
  <<: *default
  database: app_production

的Gemfile

gem 'pg', '~> 0.18.2'

虽然我在stackoverflow中发现了类似的问题,但它们对我不起作用。

如果您能告诉我如何避免此错误,将不胜感激。

Cloud 9无法允许我们像this post那样访问pg_hba.conf文件。

修改!!!

添加了

host: localhost而不是host: <%= ENV['IP'] %> in "database.yml"

sudo vim /etc/postgresql/9.3/main/pg_hba.conf

# "local" is for Unix domain socket connections only
local   all             xxx                                     peer

而不是

# "local" is for Unix domain socket connections only
local   all             username                                     peer

1 个答案:

答案 0 :(得分:0)

localhost作为主机引用TCP连接

所以在你的database.yml

host:     localhost

并且您对所有三种环境使用相同的usernamepassword也会检查此内容。

ENV['IP']应该引用localhost

pg_hba.conf中检查您的身份验证方法,它应该是md5

# IPv4 local connections:
host    all             all             127.0.0.1/32            md5

如果

# "local" is for Unix domain socket connections only
local   all             username                                  peer

然后你需要通过Unix域套接字连接

如果您使用类似debian的操作系统,则意味着将/var/run/postgresql放入主机字段

所以在database.yml

 host:  "/var/run/postgresql"

希望它能解决你的问题