Sometimes in #rails you don't want to touch database.yml file and to leave username and password as they were. But migrations will fail because you don't have a role (username and password like in your database.yml). In #postgresql a role is some kind of user which can access the database. To list all the roles use \du command.

Try to create new role:

  CREATE ROLE new_role WITH PASSWORD 'new_pass';

And if you run \du command you will see, that new_role is not allowed to log in and if you try to run you migrations you will have an error. To allow role to login you must specify LOGIN option:

  CREATE ROLE new_role WITH LOGIN PASSWORD 'new_pass';

Also you can specify not only LOGIN option. There are several more options like SUPERUSER, list of all options available here


To drop the role use:

  DROP ROLE new_role;