Programuję na Ubuntu 11.10 i RubyMine
Oto moje ustawienia programistyczne dla database.yml: które RubyMine stworzył dla mnie
development:
adapter: postgresql
encoding: unicode
database: mydb_development
pool: 5
username: myuser
password:
kiedy próbuję uruchomić aplikację, pojawia się ten błąd poniżej, wygląda na to, że nie utworzyłem jeszcze użytkownika „projektu”, ale jak mogę utworzyć użytkownika i nadać mu bazę danych w postgres? jeśli to jest problem, jakie narzędzie jest zalecane do tego zadania w Ubuntu? jeśli to nie jest problem, proszę o poradę.
Exiting
/home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `initialize': FATAL: Peer authentication failed for user "project" (PG::Error)
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `new'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:1194:in `connect'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:329:in `initialize'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `new'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/postgresql_adapter.rb:28:in `postgresql_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:303:in `new_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:313:in `checkout_new_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:237:in `block (2 levels) in checkout'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `loop'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:232:in `block in checkout'
from /home/sam/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/monitor.rb:211:in `mon_synchronize'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:229:in `checkout'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:95:in `connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_pool.rb:398:in `retrieve_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:168:in `retrieve_connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/connection_adapters/abstract/connection_specification.rb:142:in `connection'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/model_schema.rb:308:in `clear_cache!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activerecord-3.2.3/lib/active_record/railtie.rb:91:in `block (2 levels) in <class:Railtie>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:418:in `_run__757346023__prepare__404863399__callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:405:in `__run_callback'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:385:in `_run_prepare_callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/callbacks.rb:81:in `run_callbacks'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:74:in `prepare!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/actionpack-3.2.3/lib/action_dispatch/middleware/reloader.rb:48:in `prepare!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application/finisher.rb:47:in `block in <module:Finisher>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `instance_exec'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:30:in `run'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:55:in `block in run_initializers'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `each'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/initializable.rb:54:in `run_initializers'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/application.rb:136:in `initialize!'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/railtie/configurable.rb:30:in `method_missing'
from /home/sam/RubymineProjects/project/config/environment.rb:5:in `<top (required)>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `block in require'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:236:in `load_dependency'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/activesupport-3.2.3/lib/active_support/dependencies.rb:251:in `require'
from /home/sam/RubymineProjects/project/config.ru:4:in `block in <main>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `instance_eval'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:51:in `initialize'
from /home/sam/RubymineProjects/project/config.ru:1:in `new'
from /home/sam/RubymineProjects/project/config.ru:1:in `<main>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `eval'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/builder.rb:40:in `parse_file'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:200:in `app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:46:in `app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:301:in `wrapped_app'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/rack-1.4.1/lib/rack/server.rb:252:in `start'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands/server.rb:70:in `start'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:55:in `block in <top (required)>'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `tap'
from /home/sam/.rvm/gems/ruby-1.9.3-p0@project/gems/railties-3.2.3/lib/rails/commands.rb:50:in `<top (required)>'
from /home/sam/RubymineProjects/project/script/rails:6:in `require'
from /home/sam/RubymineProjects/project/script/rails:6:in `<top (required)>'
from -e:1:in `load'
from -e:1:in `<main>'
Process finished with exit code 1
host: localhost
ipool: 5
brakowało w mojej konfiguracji. Po ich dodaniu błąd zniknął.host: localhost
brakowało. po dodaniu wszystko działało. To jest w Ubuntu 13.04Jest to najbardziej niezawodny sposób, aby aplikacja rails działała z postgres w środowisku programistycznym w Ubuntu 13.10.
1) Utwórz aplikację railsową z postgres YAML i gemem „pg” w Gemfile:
2) Daj mu jakąś funkcjonalność CRUD. Jeśli tylko widzisz, czy postgres działa, utwórz rusztowanie:
3) Jak w
rails 4.0.1
tej-d postgresql
opcji generuje YAML który nie zawiera parametru hosta. Odkryłem, że tego potrzebuję. Edytuj dział rozwoju i utwórz następujące parametry:Zwróć uwagę, że
database
parametr jest przeznaczony dla bazy danych, która nie została jeszcze zamknięta, ausername
ipassword
są poświadczeniami dla roli, która również nie istnieje. Stworzymy je później!Tak
config/database.yml
powinno wyglądać (bez wstydu w copypasting: D):4) Uruchom powłokę postgres za pomocą tego polecenia:
4a) Możesz otrzymać ten błąd, jeśli Twój aktualny użytkownik (tak jak użytkownik Twojego komputera) nie ma odpowiedniej roli administracyjnej postgres.
Teraz zainstalowałem postgres tylko raz, więc mogę się mylić, ale myślę, że postgres automatycznie tworzy rolę administracyjną z tymi samymi poświadczeniami, co użytkownik, którego zainstalowałeś.
4b) Oznacza to, że musisz zmienić użytkownika, który zainstalował postgres, aby użyć polecenia psql i uruchomić powłokę:
A potem biegnij
5) Będziesz wiedział, że jesteś w powłoce postgres, ponieważ twój terminal będzie wyglądał tak:
6) za pomocą składni PostgreSQL, stwórzmy użytkownikowi my określonego w
config/database.yml
„s rozwoju sekcji:Teraz jest tu kilka subtelności, więc przejdźmy do nich.
Powinieneś zobaczyć to w swoim terminalu:
To znaczy „UTWORZONO ROLĘ”, ale alerty postgres wydają się przyjmować te same imperatywne konwencje git hub.
7) Teraz, nadal w powłoce postgres, musimy stworzyć bazę danych o nazwie, którą ustawiliśmy w YAML. Ustaw użytkownika, którego utworzyliśmy w kroku 6, jako jego właściciela:
Dowiesz się, czy ci się udało, ponieważ otrzymasz wynik:
8) Zamknij powłokę postgres:
9) Teraz chwila prawdy:
Jeśli otrzymasz to:
Gratulacje, postgres doskonale współpracuje z Twoją aplikacją.
9a) Na moim komputerze lokalnym ciągle otrzymywałem błąd uprawnień. Nie pamiętam dokładnie, ale był to błąd podobny do
Chociaż radziłbym bardzo uważnie przemyśleć rekurencyjne ustawianie priorytetów zapisu na maszynie produkcyjnej, lokalnie nadałem całej mojej aplikacji uprawnienia do odczytu zapisu w następujący sposób:
9b) W górę o jeden poziom katalogu:
9c) Ustaw uprawnienia katalogu my_application i całą jego zawartość na 666:
9d) I ponownie uruchom migrację:
Kilka wskazówek i sztuczek, jeśli się pomylisz
Wypróbuj te czynności przed ponownym uruchomieniem wszystkich tych kroków:
Użytkownik mynewusername nie ma uprawnień do CRUD do
my_app_development
bazy danych? Usuń bazę danych i utwórz ją ponownie z mynewusername jako właścicielem:1) Uruchom powłokę postgres:
2) Usuń
my_app_development
bazę danych. Bądź ostrożny! Upuść oznacza całkowite usunięcie!3) Odtwórz inną
my_app_development
i ustaw moją nową nazwę użytkownika jako właściciela:4) Zamknij powłokę:
mynewusername
Użytkownik nie może się zalogować do bazy danych? Myślisz, że wpisałeś nieprawidłowe hasło w YAML i nie pamiętasz hasła, które wprowadziłeś za pomocą powłoki postgres? Po prostu zmień rolę za pomocą hasła YAML:1) Otwórz YAML i skopiuj hasło do schowka:
2) Uruchom powłokę postgres:
3)
mynewusername
Hasło aktualizacji . Wklej hasło i pamiętaj o umieszczeniu wokół niego pojedynczych cudzysłowów:4) Zamknij powłokę:
Próbujesz połączyć się z hostem lokalnym za pośrednictwem przeglądarki bazy danych, takiej jak Dbeaver i nie wiesz, jakie jest hasło użytkownika postgres? Zmień to w ten sposób:
1) Uruchom
passwd
jako superużytkownik:2) Wprowadź hasło do swojego konta
sudo
(nie ma to nic wspólnego z postgres):3) Utwórz nowe hasło do konta postgres:
Otrzymujesz ten komunikat o błędzie ?:
4) Musisz dać swojemu użytkownikowi możliwość tworzenia baz danych. Z powłoki psql:
źródło
host: localhost
? To był dla mnie prawdziwy chwyt. Wokół hasła potrzebujesz pojedynczych cudzysłowów. Na mojej klawiaturze toshift
+@
. W powłoce psql potrzebujesz tylko pojedynczych cudzysłowów wokół niektórych parametrów. Potrzebujesz ich wokół hasła, a nie na przykład nazwy roli. Szczerze mówiąc, jest to bardzo skomplikowane, ale w porządku, gdy już wiesz, że to niuanse :)Trwałe rozwiązanie:
Problem dotyczy twojego pg_hba. Ta linia:
Powinien być
Następnie uruchom ponownie serwer postgresql po zmianie tego pliku.
Jeśli korzystasz z Linuksa, polecenie byłoby
źródło
Napotkałem ten sam problem na komputerze z systemem Ubuntu, więc usunąłem ten błąd, wykonując kilka czynności. Przełącz się na użytkownika postgres
zapyta o hasło i domyślnie hasło to
postgres
Po przełączeniu użytkownika na postgres, otwórz konsolę psql
więc sprawdź wersję postgres, jeśli dostępnych jest wiele wersji
Teraz otwarte
postgres user
9.1
jest wersją zwracaną z górnej komendyi wymień
do
Uruchom ponownie usługę
Piszę również kroki na swoim blogu
http://tarungarg402.blogspot.in/2014/10/set-up-postgresql-on-ubuntu.html
źródło
md5
uwierzytelnianie wymaga niezerowego hasła dla użytkownika bazy danych (właśnie zostało przez to dzisiaj pobite, próbując zmaksymalizować lenistwo podczas tworzenia aplikacji Railsowej).Możesz przejść do pliku /var/lib/pgsql/data/pg_hba.conf i dodać zaufanie zamiast Ident. Zadziałało dla mnie.
Aby uzyskać więcej informacji, zapoznaj się z tym problemem Uwierzytelnianie identyfikacyjne użytkownika nie powiodło się
źródło
/var/lib/pgsql/9.2/data/pg_hba.conf
Dodawanie
host: localhost
było dla mnie magiąźródło
Jeśli pojawi się ten komunikat o błędzie (
Peer authentication failed for user (PG::Error)
) podczas uruchamiania testów jednostkowych, upewnij się, że baza danych testowych istnieje.źródło
Z tym samym problemem spotkałem się również podczas pracy w swoim środowisku programistycznym, problem polegał na tym, że zostawiłem
host: localhost
komentarz wconfig/database.yml
pliku.Więc moja aplikacja nie mogła połączyć się z bazą danych PostgreSQL, po prostu odkomentowanie jej rozwiązało problem.
To wszystko.
mam nadzieję, że to pomoże
źródło