Unable to run rake db:create:all

16 views
Skip to first unread message

Ajit Teli

unread,
Feb 1, 2012, 1:59:37 AM2/1/12
to rubyonra...@googlegroups.com
I am able to create databases (development, test, and production
databases) as follows
.................................................................
ajit@ajit:~$ su - postgres
Password:
postgres@ajit:~$ psql
postgres=# create DATABASE book_shelf_development;
CREATE DATABASE
postgres=# create DATABASE book_shelf_test;
CREATE DATABASE
postgres=# create DATABASE book_shelf_production;
CREATE DATABASE
postgres=#

................................................................

But when I try to create same databases using the command
'rake db:create:all', I am getting an error massage saying 'FATAL:
Ident authentication failed for user "postgres"'. And none of the
databases are created.

And also after creating databases as shown above, I created migration
files and I am able to do rake db:migrate for the same database.yml
file.


Can you please help me why 'rake db:create:all' is not working?

Thank you
Ajit

--
Posted via http://www.ruby-forum.com/.

Colin Law

unread,
Feb 1, 2012, 3:59:00 AM2/1/12
to rubyonra...@googlegroups.com
On 1 February 2012 06:59, Ajit Teli <li...@ruby-forum.com> wrote:
> I am able to create databases (development, test, and production
> databases) as follows
> .................................................................
> ajit@ajit:~$ su - postgres
> Password:
> postgres@ajit:~$ psql
> postgres=# create DATABASE book_shelf_development;
> CREATE DATABASE
> postgres=# create DATABASE book_shelf_test;
> CREATE DATABASE
> postgres=# create DATABASE book_shelf_production;
> CREATE DATABASE
> postgres=#
>
> ................................................................
>
> But when I try to create same databases using the command
> 'rake db:create:all', I am getting an error massage saying 'FATAL:
> Ident authentication failed for user "postgres"'. And none of the
> databases are created.
>
>  And also after creating databases as shown above, I created migration
> files and I am able to do rake db:migrate for the same database.yml
> file.

Possibly you have the correct user/password for the development db but
not for one of the others. Try using create to create them one at a
time and see if one fails. Also check the yml file very carefully for
small errors. Possibly copy/paste the user/password lines from the
development section to the others.

Colin

Craig White

unread,
Feb 1, 2012, 10:24:05 AM2/1/12
to rubyonra...@googlegroups.com

----
not a rails issue but an issue from not understanding postgresql.

probably a bad idea to use 'postgres' as the user/owner of a database and postgres has users/roles/grants functionality for the purpose of program interface with the postgres server.

if you are intent on using postgres without gaining any knowledge about it's authentication mechanisms, then you should understand that user postgres doesn't have a password and out of the box, can only use the localhost postgresql server via a local socket (not TCP/IP) - thus database.yml shouldn't have a password, a port # or anything but the actual local socket (/var/run/postgresql/$SOME_PID_FILE ?)

Craig

Peter Vandenabeele

unread,
Feb 1, 2012, 11:11:24 AM2/1/12
to rubyonra...@googlegroups.com

Maybe the practical solution for the OP then is to do

$ createuser ajit
Shall the new role be a superuser? (y/n) y

and that will at least reduce the need to use the 'postgres' user.

In that case the database.yml could look like

development:
  adapter: postgresql
  encoding: unicode
  pool: 5
  min_messages: log

As described by Craig.

Do NOT mention localhost  (then you will go over local socket, using the
user authentication of user 'ajit' to get in locally).

HTH,

Peter
Reply all
Reply to author
Forward
0 new messages