2012-12-01 47 views
3

当我运行分贝我得到这个错误:创建:无法访问Postgres的文件pg_hba.conf中

FATAL: Peer authentication failed for user "wandrr" 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in `initialize' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in `new' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in `connect' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/postgresql_adapter.rb:326:in `initialize' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:315:in `new_connection' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:325:in `checkout_new_connection' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:247:in `block (2 levels) in checkout' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `loop' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:242:in `block in checkout' 
/home/jack/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:239:in `checkout' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:102:in `block in connection' 
/home/jack/.rvm/rubies/ruby-1.9.3-p327/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:101:in `connection' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/gems/activerecord-3.2.9/lib/active_record/connection_adapters/abstract/connection_pool.rb:410:in `retrieve_connection' 
....Edit out 40 more of these warnings... 
/home/jack/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `eval' 
/home/jack/.rvm/gems/ruby-1.9.3-p327/bin/ruby_noexec_wrapper:14:in `<main>' 
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "database"=>"wandrr_test", "pool"=>5, "username"=>"wandrr", "password"=>nil} 

所以我想通了,我需要编辑pg_hba.conf的问题是...它将无法打开。它一直告诉我我没有权限使用此文件。那么我如何获得许可?我正在运行ubuntu 12.10和rails 1.9.3和postgres 9.1

+0

您是否尝试使用sudo编辑它:'sudo vi pg_hba.conf'? –

+1

你......没什么出现。我以为它被认为是充满了文字? – Jakxna360

+0

矿井也是空的。这可能是别的。你能从命令行登录吗? –

回答

8

首先记下您系统上pg_hba.conf的位置。如果你不知道,但你可以连接,连接到与PG的pgAdmin-III或者psql并运行:

SHOW hba_file; 

得到的pg_hba.conf位置。它的位置很标准,在Ubuntu上它将在/etc/postgresql/[major.minor]/main/pg_hba.conf例如/etc/postgresql/9.1/main/pg_hba.conf。在大多数其他发行版中,它将在/var/lib/pgsql//var/lib/postgresql之下,直接或在版本化的目录中。

要编辑此文件,您必须先指定完整路径或将目录更改为其位置。你说:

sudo vi /etc/postgresql/9.1/main/pg_hba.conf 

如果你喜欢一个更友好的文本编辑器:

sudo nano /etc/postgresql/9.1/main/pg_hba.conf 

或与您喜欢的编辑器代替 “纳米”,像gedit

保存更改后,请记住重新加载PostgreSQL服务以使其生效。在Ubuntu上你需要:

pg_ctlcluster 9.1 main reload 
+0

当我做'sudo gedit pg_hba.conf'我的目录除了pg_hba.conf之外还添加了一个pg_hba.conf〜。编辑pg_hba.conf文件的最佳方法是什么? –

+1

使用不保存备份文件的编辑器。 –

1

以下Crag的建议运行良好。

对于他的最后一步,你必须须藤到数据库超级用户才能得到PostgreSQL服务重新加载:

sudo -u postres pg_ctlcluster 9.1 main reload 

这些步骤也适用于Debian希德系统工作。