Próbuję skonfigurować Postgres po raz pierwszy i muszę utworzyć użytkownika z uprawnieniami do czytania i tworzenia baz danych. Jednak kiedy używam:
createuser username
w moim terminalu otrzymuję następujący komunikat:
createuser: nie można połączyć się z postgres bazy danych: FATAL: rola "tom" nie istnieje
Tom to moje konto użytkownika Ubuntu, na które jestem teraz zalogowany. Próbuję utworzyć nazwę użytkownika „postgres”, a następnie zrobić, psql -U psql template1
aby móc utworzyć bazę danych i przypisać jej właściciela dla mojej aplikacji Railsowej.
database
postgresql
Tom Maxwell
źródło
źródło
Odpowiedzi:
Wspomniałeś o Ubuntu, więc zgadnę, że zainstalowałeś pakiety PostgreSQL z Ubuntu przez apt.
Jeśli tak,
postgres
konto użytkownika PostgreSQL już istnieje i jest skonfigurowane tak, aby było dostępne poprzezpeer
uwierzytelnianie dla gniazd unix wpg_hba.conf
. Dostajesz się do tego wykonując polecenia jakopostgres
użytkownik unixa, np .:Wszystko to znajduje się w dokumentacji Ubuntu PostgreSQL, która jest pierwszym hitem Google dotyczącym „Ubuntu PostgreSQL” i jest omówiona w wielu pytaniach dotyczących przepełnienia stosu.
(Znacznie utrudniłeś odpowiedź na to pytanie, pomijając szczegóły, takie jak system operacyjny i wersja, na której jesteś, sposób zainstalowania PostgreSQL itp.)
źródło
pg_hba.conf
aby użyćmd5
autoryzacji dla tego użytkownika (patrz instrukcja); (b) Utworzyć użytkownika systemu operacyjnego o tej samej nazwie i nadal używaćpeer
uwierzytelniania; lub (c) bardziej zaawansowane, utwórzpg_ident.conf
mapowanie, aby umożliwić użytkownikowi systemu operacyjnego zalogowanie się jako nowy użytkownik.Zobacz git z instrukcjami tutaj
Uruchomić to:
LUB
w terminalu, aby dostać się do postgres
postgres=#
Biegać
CREATE USER new_username;
Uwaga: Zastąp nowa_nazwa_użytkownika nazwą użytkownika, którego chcesz utworzyć, w twoim przypadku będzie to tom.
postgres=# CREATE USER new_username; CREATE ROLE
Ponieważ chcesz, aby ten użytkownik mógł tworzyć bazę danych, musisz zmienić rolę na superużytkownika
postgres=# ALTER USER new_username SUPERUSER CREATEDB; ALTER ROLE
Aby potwierdzić, wszystko się udało,
postgres=# \du List of roles Role name | Attributes | Member of -----------+------------------------------------------------+----------- new_username | Superuser, Create DB | {} postgres | Superuser, Create role, Create DB, Replication | {} root | Superuser, Create role, Create DB | {} postgres=#
Aktualizacja / modyfikacja (dla komputerów Mac):
Niedawno napotkałem podobny błąd na moim Macu:
psql: FATAL: role "postgres" does not exist
Wynika to z faktu, że moja instalacja została skonfigurowana z superużytkownikiem bazy danych, którego nazwa roli jest taka sama, jak nazwa logowania (krótka).
Ale niektóre skrypty linuxowe zakładają, że superużytkownik ma tradycyjną nazwę roli
postgres
Jak to rozwiązałem?
Jeśli zainstalowałeś za pomocą
homebrew
run:/usr/local/opt/postgres/bin/createuser -s postgres
/usr/local/Cellar/postgresql/10.5/bin/createuser -s postgres
LUB:
/usr/local/Cellar/postgresql/10.5/bin/createuser -s new_username
LUB:
/usr/local/opt/postgresql@11/bin/createuser -s postgres
/Applications/Postgres.app/Contents/Versions/10.5/bin/createuser -s postgres
PS: zastąp 10.5 swoją wersją PostgreSQL
źródło
psql -U postgres
to powinno ci pomóc, ponieważ stanie się to, jeśli administrator nie utworzył dla ciebie konta użytkownika PostgreSQL. Może się również zdarzyć, że przypisano Ci nazwę użytkownika PostgreSQL, która różni się od nazwy użytkownika systemu operacyjnego, w takim przypadku musisz użyć przełącznika -U.
źródło
1- Zaloguj się jako domyślny użytkownik PostgreSQL (postgres)
2- Jako użytkownik postgres. Dodaj nowego użytkownika bazy danych za pomocą
createuser
polecenia[postgres]$ createuser --interactive
3 wyjścia
źródło
Twój błąd został opublikowany w oficjalnej dokumentacji. Możesz przeczytać ten artykuł .
Skopiowałem powód dla Ciebie (i zamieściłem hiperlink na adresy URL) z tego artykułu:
Do swoich celów możesz:
1) Utwórz konto użytkownika PostgreSQL:
(
-P
opcja ustawienia hasła;-d
opcja pozwalająca na tworzenie bazy danych dla Twojej nazwy użytkownika „tom”. Zauważ, że „tom” to nazwa użytkownika systemu operacyjnego. W ten sposób możesz wykonywać polecenia PostgreSQL bezsudo
ingerencji).2) Teraz powinieneś być w stanie wykonać
createdb
i inne polecenia PostgreSQL.źródło
Miałem ten sam problem, po prostu to robię
sudo su - postgres
createuser odoo -U postgres -dRSP #P jako hasło ( odoo lub nazwa użytkownika , którą chcesz przyznać postgresowi)
źródło
W systemie Windows użyj:
C:\PostgreSQL\pg10\bin>createuser -U postgres --pwprompt <USER>
Dodaj
--superuser
lub--createdb
odpowiednio.Więcej opcji można znaleźć pod adresem https://www.postgresql.org/docs/current/static/app-createuser.html .
źródło
Jeśli nie chcesz zmieniać metody uwierzytelniania (ident) i zadzierać z pg_hba.conf, użyj tego:
Najpierw zaloguj się jako domyślny użytkownik
następnie wejdź do psql i utwórz użytkownika o takiej samej nazwie, jak ta, do której się logujesz
postgres=# CREATE USER userOS WITH PASSWORD 'garbage' CREATEDB;
możesz zweryfikować swojego użytkownika z odpowiednimi rolami za pomocą
postgres=# \du
Po tym możesz utworzyć swoją bazę danych i zweryfikować ją za pomocą
źródło
Najpierw musisz uruchomić initdb. Utworzy klaster bazy danych i początkową konfigurację
Zobacz Jak skonfigurować postgresql po raz pierwszy? i http://www.postgresql.org/docs/8.4/static/app-initdb.html
źródło
initdb
nie miałby serwera bazy danych działającego i przyjmującego połączenia w celu wygenerowania zgłoszonego komunikatu o błędzie. Usuń tę mylącą odpowiedź. (BTW, w przyszłości proszę linkować do / docs / current / static /, aby uniknąć gromadzenia się nieaktualnych linków)