Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

rake db:migrate failed

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.)

like image 755
kenzy66 Avatar asked Dec 13 '22 03:12

kenzy66


2 Answers

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
like image 81
Dexter Avatar answered Dec 20 '22 18:12

Dexter


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)

like image 22
Ben Miller Avatar answered Dec 20 '22 19:12

Ben Miller