Właśnie zainstalowałem Postgres i majstrowałem przy nim i różnymi konfiguracjami przez 1-2 godziny.
Utknąłem na niemożności zmiany użytkownika na postgres
$ su - postgres
zwraca następujący błąd: su: unknown login: postgres
$ sudo -u postgres psql
zwraca następujący błąd: sudo: unknown user: postgres
Te próby są podejmowane jako zwykły użytkownik. Wypróbowanie ich jako roota daje dokładnie takie same wyniki. Zainstalowałem postgres przez Homebrew na OS X i wielokrotnie czytałem instrukcje.
macos
postgresql
krystah
źródło
źródło
postgres
użytkownik.postgres_
zamiast tego użytkownik jest tworzony jako . Uwaga na końcu podkreślenia. Czy na pewno Ty (lub instalator) faktycznie utworzyłeś instancję PostgreSQL i uruchomiłeś bazę danych?postgres
użytkownika. Rozwiązano problem po zainstalowaniupostgresql-server
pakietu.Odpowiedzi:
psql
: Loguje mnie przy użyciu mojej domyślnej nazwy użytkownikapsql -U postgres
: Loguje mnie jako użytkownik postgresSudo nie wydaje mi się potrzebne.
Używam Postgres.app dla mojej bazy danych postgres OS X. Usunęło to ból głowy związany z upewnianiem się, że instalacja działa, a serwer bazy danych został poprawnie uruchomiony. Sprawdź to tutaj: http://postgresapp.com
Edycja: Podziękowania dla @Erwin Brandstetter za poprawienie mojego użycia argumentów.
źródło
psql postgres
ipsql -d postgres
.By
psql --help
, kiedy nie ustawić opcje dla nazwy bazy danych (bez-d
opcji) byłoby to nazwa użytkownika, jeśli nie zrobił-U
, nazwa użytkownika bazy danych byłoby zbyt swoją nazwę użytkownika, itd.Ale przez
initdb
(aby utworzyć pierwszą bazę danych) polecenie, nie ma twojej nazwy użytkownika jak żadna nazwa bazy danych. Posiada bazę danych o nazwiepostgres
. Pierwsza baza danych jest zawsze tworzona przez komendę initdb podczas inicjowania obszaru przechowywania danych. Ta baza danych nazywa się postgres.Więc jeśli nie masz innej bazy danych o nazwie twoja nazwa użytkownika, musisz zrobić,
psql -d postgres
aby polecenie psql działało. I wygląda na to, że-d
domyślnie daje opcję,psql postgres
również działa.Jeśli utworzyłeś inną bazę danych o takiej samej nazwie jak twoja nazwa użytkownika (należy to zrobić
createdb
), możeszpsql
tylko wydawać komendy . Wygląda na to, że pierwsza nazwa użytkownika bazy danych została ustawiona jako nazwa użytkownika maszyny przez brew.lub,
działałby domyślnie.
źródło
OS X ma tendencję do poprzedzania nazw kont systemowych znakiem „_”; nie mówisz, jakiej wersji OS X używasz, ale przynajmniej w 10.8 i 10.9 użytkownik _postgres istnieje w domyślnej instalacji. Zauważ, że nie będziesz w stanie uzyskać dostępu do
su
tego konta (z wyjątkiem konta root), ponieważ nie ma ono hasła.sudo -u _postgres
z drugiej strony powinien działać dobrze.źródło
dyskusja i odpowiedź tutaj były dla mnie ogromnie pomocne:
psql: FATAL: baza danych "<user>" nie istnieje
źródło
Dla mnie zadziałało dobrze w przypadku nazwy db: postgres i nazwa użytkownika: postgres. Nie musisz więc pisać sudo.
A w przypadku innej bazy danych możesz spróbować
Jak podano w pomocy Postgres:
źródło
$ psql -U postgres
generuje dane wyjściowepsql: FATAL: role "postgres" does not exist
, alepsql postgres
działa.Otrzymuję dokładnie te same błędy co kryshah z
su - postgres
isudo -u postgres psql
. Odpowiedź DanielM zawiera również błędy.Wyprowadza przy złych ustawieniach
Odpowiedz jednak z komentarza przbabu.
masi$ psql psql: FATAL: database "masi" does not exist masi$ psql -U postgres psql: FATAL: role "postgres" does not exist masi$ psql postgres psql (9.4.1) Type "help" for help.
Myślę, że jakaś część tego problemu może być związana z ustawieniami właściciela w OSX
masi$ ls -al /Users/ total 0 drwxr-xr-x 7 root admin 238 Jul 3 09:50 . drwxr-xr-x 37 root wheel 1326 Jul 2 19:02 .. -rw-r--r-- 1 root wheel 0 Sep 10 2014 .localized drwxrwxrwt 7 root wheel 238 Apr 9 19:49 Shared drwxr-xr-x 2 root admin 68 Jul 3 09:50 postgres drwxr-xr-x+ 71 masi staff 2414 Jul 3 09:50 masi
ale robienie
sudo chown -R postgres:staff /Users/postgres
dajechown: invalid user: ‘postgres:staff’
.Krótko mówiąc, to nie jest rozwiązanie problemu. Użyj narzędzi dostarczonych przez instalację postgres, aby utworzyć użytkownika i bazę danych.
Aby uzyskać właściwe ustawienia i wyjścia
Po instalacji postgres dostępne są specjalne polecenia umożliwiające dodanie nowego użytkownika do systemu bazy danych. Po initdb uruchom następujące czynności, jak opisano tutaj
createuser --pwprompt postgres createdb -Opostgres -Eutf8 masi_development psql -U postgres -W masi_development
Aby przez cały czas unikać prośby o hasło, masz trzy możliwości, jak opisano tutaj .
źródło
Dla mnie to było rozwiązanie w systemie MacOS Ponowna instalacja pliku psql
brew install postgres
Uruchom serwer PostgreSQL
pg_ctl -D /usr/local/var/postgres start
Zainicjuj bazę danych
Jeśli ta komenda zgłasza błąd, rm stary plik bazy danych i ponownie uruchom powyższe polecenie
Utwórz nową bazę danych
Zostaniesz zalogowany do tej bazy danych i możesz tutaj utworzyć użytkownika, aby się zalogować
źródło
Rozwiązanie jest proste:
zaloguj się jako root
i po:
źródło