Jak stworzyć nowego usera do nowgo projektu z Postgresql

Witam stworzyłem nową aplikację rails new devise_gem_app -d postgresql, następnie zmieniłem config/database.yml na takie:

default: &default
  adapter: postgresql
  encoding: unicode
  username: devise_gem_app
  password: devise_gem_app
  host: localhost

development:
  <<: *default
  database: devise_gem_app_development

test:
  <<: *default
  database: devise_gem_app_test

I nie potrafię/nie rozumiem jak mam stworzyć konto żeby połączyć się z tą bazą danych.

Usera tworzę tak: createuser devise_gem_app -W ustawiam na superusera, i wpisuje haslo: devise_gem_app, ale ciągle dostaje jak chce stworzyc baze danych rake db:migrate, dostaje zwrotke że nie może połączyć:

PG::ConnectionBad: FATAL:  password authentication failed for user "devise_gem_app"
FATAL:  password authentication failed for user "devise_gem_app"

Nawet próbowałem zmieniać pg_hbf.conf:

#local   replication     postgres                                trust

… i nic …

prosze niech mi ktoś wyośli co robię źle :wink:

Najprawdopodobniej nieprawidłowo hasło podajesz na etapie tworzenia użytkownika.
Tam chyba dosyć istotne było, by hasło było umieszczone pomiędzy " " . Sprawdź najlepiej w dokumentacji i przykładach.

Najlepiej sprawdź, czy możesz takim kontem i takim hasłem się łączyć z serwerem bazy danych

psql -d moja_baza -U nazwa_usera

więcej o łączeniu:
http://www.postgresql.org/message-id/001f01c018c2$830133b0$64898cd5@northlink.gr

więcej o tworzeniu kont
http://www.postgresql.org/docs/9.2/static/app-createuser.html

spróbuj dodać/zmienić n/w wpis w pliku pg_hbf.conf

host    all             all             127.0.0.1/32            md5

pamiętaj też o zrestartowaniu posgresql po edycji tego pliku

md5 Też próbowałem… nic dziś juz nie mam czasu jutro znów nad tym posiedze i napisze co pomogło.

su - postgres
psql -d template1 -U postgres
template1=# CREATE USER devise_gem_app WITH PASSWORD 'devise_gem_app';
template1=# CREATE DATABASE devise_gem_app_development;
(i kolejne)
template1=# GRANT ALL PRIVILEGES ON DATABASE devise_gem_app_development to  devise_gem_app;
template1=# \q
# local      DATABASE  USER  METHOD  [OPTION]

zatem

local all devise_gem_app passowrd

i przeładuj bazę

Dzięki Jacki

su - postgres
psql -d template1 -U postgres
template1=# CREATE USER devise_gem_app WITH PASSWORD 'devise_gem_app';
template1=# CREATE DATABASE devise_gem_app_development;
(i kolejne)
template1=# GRANT ALL PRIVILEGES ON DATABASE devise_gem_app_development to  devise_gem_app;
template1=# \q

Podziałało :slight_smile: dzięki wielkie, szkoda tylko że trzeba grzebać bezpośrednio w postgres, a niema tu wsparcia od strony railsów. Bo spędziłęm wczoraj 2 godziny na szukaniu rozwiązania i go nie znalazłem. A zdaje się że tworzenie nowego konta do każdego projektu jest powszechnie stosowaną, “dobrą praktyką” choć nie wiem jeszcze dlaczego.

Ja uważam, że jeżeli jedno konto (nie ważne czy to konto bazy danych, czy konto systemowe użytkownika) zostanie skompromitowane, to szkoda by było, aby dotknęło to wszystkie aplikacje. Zakładamy oczywiście, że system został nietknięty, gdyż w przeciwnym wypadku musimy zakładać, że możemy mieć wszędzie niechciany kod.
Ok, jeżeli masz bazę słuchającą tylko na localhost. Masz dobrze zabezpieczony system i masz pełną świadomośc tego w jaki sposób się zabezpieczyłeś przed przejęciem konta, to ok. Nie widzę problemu, żeby mieć jednego użytkownika na kilka aplikacji. IMO to jest kwestia kalkulacji ryzyka. Pół biedy, jeżeli możesz sobie pozwolić na przestój kilku aplikacji przez pewien czas, który będzie wymagany na przywrócenie systemu/kont/aplikacji - to jest inna historia na temat tego w jaki sposób działamy po wykryciu włamania.
Jeżeli robisz tylko robisz dla zabawy i się na tym uczysz - spoko, niech to będzie jeden użytkownik bazy danych na jednym koncie systemowym.