I've just started to study Rails. When I try "rake db:migrate", the following error occured.
rake aborted! FATAL: Peer authentication failed for user "kt1"
it seems there's something wrong with database.yml but I have no idea how to solve. Please give me an advice.
Thank you very much for your comment and edit. I'm using postgresql (0.13.2). My environment is as follows. Ubuntu 11.10 Ruby 1.8.7 Rails 3.2.3 gem 1.8.21
database.yml as below.
# PostgreSQL. Versions 8.2 and up are supported.
#
# Install the pg driver:
# gem install pg
# On Mac OS X with macports:
# gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config
# On Windows:
# gem install pg
# Choose the win32 build.
# Install PostgreSQL and put its /bin directory on your path.
#
# Configure Using Gemfile
# gem 'pg'
#
development:
adapter: postgresql
encoding: unicode
database: kt1_development
pool: 5
username: kt1
password:
# Connect on a TCP socket. Omitted by default since the client uses a
# domain socket that doesn't need configuration. Windows does not have
# domain sockets, so uncomment these lines.
#host: localhost
#port: 5432
# Schema search path. The server defaults to $user,public
#schema_search_path: myapp,sharedapp,public
# Minimum log levels, in increasing order:
# debug5, debug4, debug3, debug2, debug1,
# log, notice, warning, error, fatal, and panic
# The server defaults to notice.
#min_messages: warning
# Warning: The database defined as "test" will be erased and
# re-generated from your development database when you run "rake".
# Do not set this db to the same as development or production.
test:
adapter: postgresql
encoding: unicode
database: kt1_test
pool: 5
username: kt1
password:
production:
adapter: postgresql
encoding: unicode
database: kt1_production
pool: 5
username: kt1
password:
I also tried with username in blank. Then the error comes to
rake aborted!
FATAL: role "kenji" does not exist
(kenji is my username on Ubuntu.)
Try to modify your (/etc/postgresql/9.1/main/
) pg_hba.conf
file like this, changing the method for local users from peer to trust.
# Database administrative login by UNIX sockets
local all postgres trust
# TYPE DATABASE USER CIDR-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 md5
# IPv6 local connections:
host all all ::1/128 md5
You need to first create the user kt1 , then create the database and give the user permission to it.
There is a way to let rails create the user and database, but in postgresql, it is best to do it by hand (IMHO)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With