如何使用PostgreSQL解决Rails中的错误'fe_sendauth: no password supplied'?

我试图用postgresql数据库创建我的Rails应用程序,但当我启动 rails server 时,我收到此错误:

fe_sendauth:未提供密码

这是我一步一步的行动:

$ sudo apt-get install postgresql postgresql-contrib
$ gem install pg
$ rails new timetracker --database=postgresql --skip-unit-test

我的 database.yml 文件如下所示:

default: &default
  adapter: postgresql
  encoding: unicode
  pool: 5
  host: localhost
  username: postgres
  password:

development:
  <<: *default
  database: timetracker_development

test:
  <<: *default
  database: timetracker_test

production:
  <<: *default
  database: timetracker_production

这是我的 pg_hba.conf 文件:

# Database administrative login by Unix domain socket
local   all             postgres                                peer

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            md5
# IPv6 local connections:
host    all             all             ::1/128                 md5

# modified by me.
host    all             all             127.0.0.1/32            trust

host    all             all             127.0.0.1/32            trust

host    all             all             ::1/128                 trust

所以,当我做 rails server 时,我得到了错误,然后这就是我得到的结果:

$ rails c
$ ActiveRecord::Base.connection.instance_variable_get(:@config)

2.1.5:001> ActiveRecord :: Base.connection.instance_variable_get(:@ config)PG :: ConnectionBad:fe_sendauth:没有从/home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord提供的密码-4.2.3 / lib / active_record / connection_adapters / postgresql_adapter.rb:655:in initialize'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2.3/lib/active_record/connection_adapters /postgresql_adapter.rb:655:innew'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:655:in connect'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:242:ininitialize'来自/home/denis/.rvm/gems/ruby -2.1.5 / gems / activerecord-4.2.3 / lib / active_record / connection_adapters / postgresql_adapter.rb:44:in new'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2 .3 / lib / active_record / connection_adapters / postgresql_adapter.rb:44:在postgresql_connection中来自/home/denis/.rvm/gems/ruby-2 . 1.5 / gems / activerecord-4.2.3 / lib / active_record / connection_adapters / abstract / connection_pool.rb:438:in new_connection'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2 . 3 / lib / active_record / connection_adapters / abstract / connection_pool.rb:448:in checkout_new_connection'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2.3/lib/active_record/connection_adapters/ abstract / connection_pool.rb:422:在/home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:349中的acquire_connection'中:在结帐中的块中来自/home/denis/.rvm/rubies/ruby-2.1.5/lib/ruby/2.1.0/monitor.rb:211:in mon_synchronize'from /home/denis/.rvm/gems/ ruby-2.1.5 / gems / activerecord-4.2.3 / lib / active_record / connection_adapters / abstract / connection_pool.rb:348:in checkout'from /home/denis/.rvm/gems/ruby-2.1.5/gems/ activerecord-4.2.3 / lib / active_record / connection_adapters / abstract / connection_pool.rb:263:in from block'from /home/denis/.rvm/r ubies / ruby-2.1.5 / lib / ruby / 2.1.0 / monitor.rb:211:in mon_synchronize'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2.3/ lib / active_record / connection_adapters / abstract / connection_pool.rb:262:in connection'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activerecord-4.2.3/lib/active_record/connection_adapters/abstract/ connection_pool.rb:571:在retrieve_connection'... 4个级别...来自/home/denis/.rvm/gems/ruby-2.1.5/gems/railties-4.2.3/lib/rails/commands/console . rb:9:从'/home/denis/.rvm/gems/ruby-2.1.5/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:68:in console'来自/ home /denis/.rvm/gems/ruby-2.1.5/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:39:in run_command!'来自/home/denis/.rvm/gems/ruby-2.1.5/gems/railties-4.2.3/lib/rails/commands.rb:17:in'来自/home/denis/.rvm/gems/ruby- 2.1.5 / gems / activesupport-4.2.3 / lib / active_support / dependencies.rb:274:in require'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.3/ lib / active_support / dependencies.rb:274:inblock in require'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:240:in load_dependency'来自/ home / denis / WEB / Rails / timetracker来自/ home / denis / WEB / Rails / bin / rails:8:in <top(required)>'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:268: inload'from /home/denis/.rvm/gems/ruby-2.1.5/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:268:in block in load'from /home/denis/.rvm来自/ home / denis /的/gems/ruby-2.1.5/gems/activesupport-4.2.3/lib/active_support/dependencies.rb:240:inload_dependency' . rvm / gems / ruby-2.1.5 / gems / activesupport-4.2.3 / lib / active_support / dependencies.rb:268:in load'from /home/denis/.rvm/rubies/ruby-2.1.5/lib/ ruby / site_ruby / 2.1.0 / rubygems / core_ext / kernel_require.rb:54:inrequire'from /home/denis/.rvm/rubies/ruby-2.1.5/lib/ruby/site_ruby/2.1.0/rubygems/core_ext /kernel_require.rb:54:in要求'来自-e:1:in'2.1.5:002>

我第一次使用postgresql,我想我只是做错了 .

你能帮帮我吗?

回答(2)

2 years ago

我对此问题的解决方案是从 default: 组中删除 host: localhost .

2 years ago

PostgreSQL按照指定的顺序匹配 pg_hba.conf 条目,因此它使用预先指定的 host all all 127.0.0.1/32 md5 条目进行身份验证,而不是指定的 trust 条目 .

将自定义 trust 条目移动到预先指定的条目之上(并可选择注释掉旧条目),然后通过运行 sudo service postgresql reload (在Ubuntu上)或重新引导来重新加载配置 .