i finished developing a little app, and try to put it into production. I copied the app to a new folder, created a new psql database with a new user, adjusted my database.yml file and try to run rake db:schema:load to get my database in the right state. Rake is able to connect to my db, since the first steps are executed, but after those, it aborts with the following message. As far as google tells me, it should be an issue with the user. However, since rake can execute the first steps, i doubt that i have an issue with it.
[root@l1vmgt08 web_qip_parser_v2]# rake db:schema:load
-- enable_extension("plpgsql")
-> 0.0171s
-- create_table("qip_changes", {:force=>:cascade})
-> 0.0919s
-- create_table("users", {:force=>:cascade})
-> 0.0989s
-- add_foreign_key("qip_changes", "users")
-> 0.0042s
-- enable_extension("plpgsql")
rake aborted!
ActiveRecord::NoDatabaseError: FATAL: role "root" does not exist
config/database.yml:
default: &default
adapter: postgresql
encoding: unicode
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: my_db_name
username: my_user_name
password: my_password
host: localhost
port: 5432
test:
<<: *default
database: my_db_name
production:
<<: *default
database: my_db_name
username: my_user_name
password: my_password
host: localhost
port: 5432
Psql output of my Dev and the new Prod user for privilege comparison:
postgres=# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------------------+-------------------+----------+-------------+-------------+--------------------------------
my_dev_user_name | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | my_dev_db_name=CTc/postgres
my_user_name | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =Tc/postgres +
| | | | | postgres=CTc/postgres +
| | | | | my_db_name=CTc/postgres
so it seems to me that iam trying to connect via UNIX socket, using the local user. I found some articles describing this issue. This should be fixed when i connect via TCP/IP, by simple adding "host: localhost" to my database.yml file. However, thats exactly what i have done, so i have no idea how to proceed
here my pg_hba.conf:
# TYPE DATABASE USER ADDRESS METHOD
local all all peer
host all all 127.0.0.1/32 md5
there is another application running on the server, which works. It has the same database.yml config set as i do.