psql: FATAL: rola "postgres" nie istnieje
Jestem początkującym postgresem.
Zainstalowałem postgres.aplikacja dla komputerów mac. Bawiłem się poleceniami psql i przypadkowo upuściłem bazę danych postgres. Nie wiem, co w niej było.Obecnie pracuję nad samouczkiem: http://www.rosslaird.com/blog/building-a-project-with-mezzanine/
I utknąłem w sudo -u postgres psql postgres
KOMUNIKAT O BŁĘDZIE: psql: FATAL: role "postgres" does not exist
$ które psql
/Applications/Postgres.app/Contents/MacOS/bin/psql
To jest to co drukuje z psql -l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
------------+------------+----------+---------+-------+---------------------------
user | user | UTF8 | en_US | en_US |
template0 | user | UTF8 | en_US | en_US | =c/user +
| | | | | user =CTc/user
template1 | user | UTF8 | en_US | en_US | =c/user +
| | | | | user =CTc/user
(3 rows)
Więc co czy kroki, które powinienem podjąć? Usunąć wszystko związane z psql i ponownie zainstalować wszystko?
Dzięki za pomoc!
14 answers
Zwróć uwagę, że komunikat o błędzie nie mówi o brakującej bazie danych, lecz o brakującej roli. Później w procesie logowania może również potknąć się o brakującą bazę danych.
Ale pierwszym krokiem jest sprawdzenie brakującej roli: jakie jest wyjście psql
polecenia \du
? Na moim systemie Ubuntu odpowiedni wiersz wygląda tak:
List of roles
Role name | Attributes | Member of
-----------+-----------------------------------+-----------
postgres | Superuser, Create role, Create DB | {}
Jeśli nie ma przynajmniej jednej roli z superuser
, to masz problem: -)
Jeśli jest taki, ty możesz użyć tego do logowania. A patrząc na wynik twojego \l
polecenia: uprawnienia user
w bazach danych template0
i template1
są takie same jak w moim systemie Ubuntu dla superużytkownika postgres
. Więc myślę, że Twoja konfiguracja simple używa user
jako superużytkownika. Możesz więc spróbować tego polecenia, aby się zalogować:
sudo -u user psql user
Jeśli {[7] } jest naprawdę superużytkownikiem DB, możesz utworzyć dla niego kolejnego superużytkownika DB i prywatną, pustą bazę danych:
CREATE USER postgres SUPERUSER;
CREATE DATABASE postgres WITH OWNER postgres;
Ale od Twojego postgres.konfiguracja aplikacji nie wydaje się tego też nie powinieneś. Proste dostosowanie samouczka.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-09 10:13:04
Kluczem jest "zainstalowałem postgres.aplikacja dla komputerów mac."Ta aplikacja ustawia lokalną instalację PostgresSQL z superużytkownikiem bazy danych, którego nazwa roli jest taka sama jak nazwa loginu (krótka).
Gdy Postgres.aplikacja najpierw się uruchamia, tworzy bazę danych $USER, która jest domyślną bazą danych dla psql, gdy nie jest określona. Na domyślnym użytkownikiem jest $USER, bez hasła.
Niektóre skrypty (np. kopia zapasowa bazy danych utworzona za pomocą pgdump
na Linuksie systsem) i samouczki przyjmą, że superużytkownik ma tradycyjną nazwę roli postgres
.
Możesz sprawić, że Twoja lokalna instalacja będzie wyglądać nieco bardziej tradycyjnie i uniknąć tych problemów, wykonując jeden raz:
/Applications/Postgres.app/Contents/Versions/9.*/bin/createuser -s postgres
Co sprawi, że te fatalne: rola "postgres" nie istnieje odejdzie.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-19 18:24:24
Dla MAC:
- Install Homebrew
brew install postgres
initdb /usr/local/var/postgres
-
/usr/local/Cellar/postgresql/<version>/bin/createuser -s postgres
lub/usr/local/opt/postgres/bin/createuser -s postgres
, które po prostu użyją najnowszej wersji. - uruchom serwer postgres ręcznie:
pg_ctl -D /usr/local/var/postgres start
Aby uruchomić serwer przy starcie
mkdir -p ~/Library/LaunchAgents
ln -sfv /usr/local/opt/postgresql/*.plist ~/Library/LaunchAgents
launchctl load ~/Library/LaunchAgents/homebrew.mxcl.postgresql.plist
Teraz jest skonfigurowany, Zaloguj się za pomocą psql -U postgres -h localhost
lub użyj PgAdmin dla GUI.
Domyślnie użytkownik postgres
nie będzie miał żadnego logowania hasło.
Sprawdź tę stronę, aby uzyskać więcej takich artykułów: https://sites.google.com/site/nitinpasumarthy/blog/installingpostgresonmac
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-08-21 22:12:13
Dla mnie ten kod zadziałał:
/Applications/Postgres.app/Contents/Versions/9.4/bin/createuser -s postgres
To przyszło stąd: http://talk.growstuff.org/t/fatal-role-postgres-does-not-exist/216/4
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-05-06 20:09:37
createuser postgres --interactive
Lub zrobić superuser postgresl tylko z
createuser postgres -s
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-08-10 20:10:51
Najpierw musisz utworzyć użytkownika:
sudo -u postgres createuser --superuser $USER
Po tworzysz bazę danych:
sudo -u postgres createdb $USER
Zmień $USER
do nazwy użytkownika systemu.
możesz zobaczyć kompletne rozwiązanie tutaj .
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-15 05:46:07
Uruchomienie tego w wierszu poleceń powinno to naprawić
/Applications/Postgres.app/Contents/Versions/9.4/bin/createdb <Mac OSX Username Here>
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-13 21:41:52
I needed to unset $PGUSER
:
$ unset PGUSER
$ createuser -s postgres
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-02 06:54:28
Upuszczenie postgres
bazy danych nie ma znaczenia. Ta baza danych jest początkowo pusta, a jej celem jest po prostu, aby użytkownik postgres
miał rodzaj "domu" do podłączenia, jeśli będzie go potrzebował.
Nadal możesz odtworzyć go za pomocą polecenia SQL CREATE DATABASE postgres;
Zauważ, że tutorial, o którym mowa w pytaniu, nie jest napisany z myślą o postgres.app
.
W przeciwieństwie do PostgreSQL dla Uniksa w ogóle, postgres.app
stara się wyglądać jak normalna aplikacja w przeciwieństwie do usługi, która byłaby uruchamiana przez dedykowany postgres
użytkownik mający inne uprawnienia niż zwykły użytkownik. postgres.app
jest prowadzony i zarządzany przez twoje własne konto.
psql
, który automatycznie łączy się z bazą danych pasującą do nazwy użytkownika i z kontem db o tej samej nazwie, które zdarza się być superuser, więc może zrobić wszystko, co ma uprawnienia.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-08 20:53:25
O ile to jest warte, mam ubuntu i wiele pakietów zainstalowanych i poszło w konflikcie z nim.
Dla mnie prawidłowa odpowiedź brzmiała:
sudo -i -u postgres-xc
psql
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-11 15:37:40
To jedyny, który mi to naprawił:
createuser -s -U $USER
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-02 00:10:20
Myślę, że sudo nie jest tu potrzebne, ponieważ psql-l Zwraca listę baz danych. To mówi mi, że initdb został uruchomiony pod bieżącym użytkownikiem, a nie Pod użytkownikiem postgres.
Możesz po prostu:psql
I kontynuuj samouczek.
Sugerowałbym ogólne punkty A. H dotyczące tworzenia użytkownika postgres i db, ponieważ wiele aplikacji może się tego spodziewać.
Krótkie wyjaśnienie:
PostgreSQL nie uruchomi się z dostępem administracyjnym do system operacyjny. Zamiast tego działa ze zwykłym użytkownikiem, a w celu obsługi uwierzytelniania rówieśniczego (pytającego system operacyjny, który próbuje się połączyć) tworzy użytkownika i db z użytkownikiem, który uruchamia proces inicjalizacji. W tym przypadku był to twój normalny użytkownik.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-09 14:36:59
Utknąłem w tej sprawie po wykonaniu brew services stop postgresql
dzień wcześniej.
następnego dnia: brew services start postgresql
nie zadziała. Dzieje się tak, ponieważ jak jest pokazane podczas instalacji za pomocą homebrew. postgresql używa launchd ... który ładuje się, gdy komputer jest włączony.
rozdzielczość:brew services start postgresql
Uruchom ponownie komputer.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-06-26 12:33:53
The \du
Command return:
Nazwa roli =
postgres@implicit_files
I że polecenie postgres=# \password postgres
zwraca błąd:
Ale to działa dobrze.Błąd: rola "postgres" nie istnieje.
Również po sudo -u postgres createuser -s postgres
pierwszy wariant również działa.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-28 08:39:47