我想在 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
答案 0 :(得分:0)
localhost
作为主机引用TCP连接
所以在你的database.yml
中host: localhost
并且您对所有三种环境使用相同的username
和password
也会检查此内容。
或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"
希望它能解决你的问题