Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails + Postgres fe_sendauth: no password supplied

Hi I'm trying to hook up postgresql to my rails project. I'm learning testing but my tests aren't running because of a postgresql error about having an incorrect password:

Edmunds-MacBook-Pro:langexchange edmundmai$ rake test:units
rake aborted!
fe_sendauth: no password supplied

I've already read around and my pg_hba.conf file was originally already like this:

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     trust
# IPv4 local connections:
host    all             all             127.0.0.1/32            trust
# IPv6 local connections:
host    all             all             ::1/128                 trust
# Allow replication connections from localhost, by a user with the
# replication privilege.
#local   replication     edmundmai  

here's my database.yml file in my rails project

default: &default
  adapter: postgresql
  encoding: utf8
  pool: 5
  username: edmundmai
  password: 

development:
  <<: *default
  database: project_development

test:
  <<: *default
  database: project_test

production:
  <<: *default
  database: project_production

Does anyone know how I could fix this? We can chat if it's easier.

like image 534
bigpotato Avatar asked Dec 03 '12 19:12

bigpotato


2 Answers

Be sure that you have defined both RAILS_ENV and RACK_ENV on your production hosting server. I had a similar issue crop up where everything worked except rake and the solution was to add RACK_ENV=production to my environment. RAILS_ENV was already set to production.

export RACK_ENV=production

bundle exec rake db:version

You should see some output such as:

Current version: 20121126151935

Solution: make sure your Rails app has access to the RAILS_ENV and RACK_ENV environmental variables. Also, ensure they're both the same value.

like image 151
danielricecodes Avatar answered Nov 14 '22 21:11

danielricecodes


First you should change:

local   all             all                                     trust

to:

local   all             all                                     md5

Then, You should create a super_user in PostgreSQL with username and password,after that adding username and password of new user to your database.yml file.

To create new super_user, open Pg Admin III and right click at the bottom Login Roles to create new super user.

like image 11
Thanh Avatar answered Nov 14 '22 19:11

Thanh