Ruby on rails Cloud9中的postgresql错误“;fe_sendauth:未提供密码";

Ruby on rails Cloud9中的postgresql错误“;fe_sendauth:未提供密码";,ruby-on-rails,postgresql,ruby-on-rails-4,cloud9-ide,Ruby On Rails,Postgresql,Ruby On Rails 4,Cloud9 Ide,我想在Cloud9中为我的rails应用程序设置postgresql 尽管我遵循了这一点,但当我尝试捆绑exec rake db:create时出现了以下错误 fe_sendauth: no password supplied ... Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "pool"=>5, "username"=>nil, "password"=>

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

尽管我遵循了这一点,但当我尝试
捆绑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"}
数据库.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
虽然我在stackoverflow中发现了类似的问题,但它们并不适合我

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

Cloud 9
不允许我们访问前面提到的
pg_hba.conf
文件

编辑

添加了
host:localhost
而不是“database.yml”中的
host:

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

localhost
作为主机引用TCP连接

所以在你的database.yml中

host:     localhost
 host:  "/var/run/postgresql"
对于所有三种环境,您都使用相同的
用户名
密码
,并检查此项

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:     localhost
 host:  "/var/run/postgresql"

希望它能解决你的问题

谢谢你的快速回答,@Rajarshi Das
Cloud 9
不允许我们访问前面提到的
pg_hba.conf
文件。如果您能给我一些建议,我将不胜感激。@SamuraiBlue Cloud9不限制对该文件的访问,这是Linux做的。您可以使用sudo vim/etc/postgresql/9.3/main/pg_hba.conf对其进行编辑,谢谢您的评论,@Brady Dowling。我可以按照您的建议创建一个
conf
文件。但仍然显示相同的错误。是否检查了用户名、密码和database.yml上的主机?这三个环境应该不一样谢谢你的评论,@rajarshidas。虽然我在database.yml上更改了用户名、密码和主机,但出现了以下错误<代码>无法连接到服务器:连接被拒绝服务器是否在主机“localhost”(::1)上运行并在端口5432上接受TCP/IP连接?无法连接到服务器:连接被拒绝服务器是否在主机“localhost”(127.0.0.1)上运行并在端口5432上接受TCP/IP连接?