Uruchamianie serwera PostgreSQL w systemie Void Linux. Po zainstalowaniu uruchomiono initdb
jako użytkownik systemu operacyjnego „postgres”:
[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data"
Otrzymane dane wyjściowe:
tworzenie katalogu / var / lib / postgresql / data … ok tworzenie podkatalogów … ok wybieranie domyślnych max_connections … 100 wybieranie domyślnych shared_buffers … 128MB wybieranie dynamicznych współdzielonych implementacja pamięci … posix tworzenie plików konfiguracyjnych … ok uruchamiam skrypt bootstrap … ok wykonuję inicjalizację po bootstrapie … locale: Nie można ustawić LC_MESSAGES na domyślne locale: Nie ma takiego pliku lub katalogu ok synchronizowanie danych na dysk … ok
OSTRZEŻENIE: włączanie uwierzytelniania „trust” dla połączeń lokalnych Możesz to zmienić edytując pg_hba.conf lub używając opcji -A lub –auth-local i –auth-host, następnym razem uruchomisz initdb.
Sukces. Możesz teraz uruchomić serwer bazy danych za pomocą: pg_ctl -D / var / lib / postgresql / data -l plik dziennika początek
Następnie przystąpiłem do tworzenia usługi, przyznania prawa własności do „postgres” i uruchomienia jej:
[user@host]$ ln -s /etc/sv/postgresql /var/service [user@host]$ sudo chown postgres: /var/service/postgresql [user@host]$ sudo sv start postgresql [user@host]$ ls -l /var/service/postgresql lrwxrwxrwx 1 postgres postgres 18 nov 2 17:05 /var/service/postgresql -> /etc/sv/postgresql
Uruchomiony:
[user@host]$ sudo -u postgres psql ...
wyświetli następujący błąd:
psql: FATAL: role "postgres" does not exist
Próbowałem przyznać prawo własności do /etc/sv/postgresql
do „postgres”, ale bez powodzenia.
To były moje źródła:
https://wiki.voidlinux.eu/PostgreSQL
Błąd PostgreSQL: błąd krytyczny: rola „nazwa użytkownika” nie istnieje
Nie wiem, co robić dalej.
EDYCJA: Natknąłem się na psql: FATAL: role „postgres” nie istnieje . Nie mogę uruchomić psql -l
, ponieważ pojawia się ten sam błąd, niezależnie od tego, którego użytkownika uruchomię psql
jako.
Komentarze
Odpowiedź
Nie jest to pełna odpowiedź, ale rozważ podręcznik dotyczący initdb
tutaj :
-U
username
--username=
username
Wybiera nazwę użytkownika superużytkownika bazy danych. Domyślnie jest to nazwa efektywnego użytkownika uruchamiającego
initdb
. Naprawdę nie jest ważne, jak nazywa się superużytkownik, ale można zachować zwyczajową nazwę postgres, nawet jeśli nazwa użytkownika systemu operacyjnego jest inna.
Znaczenie …
-
Podczas uruchamiania
initdb
jako użytkownik systemu operacyjnegopostgres
, początkowa rola superużytkownika DB to takżepostgres
– w standardowym Postgresie. Słyszałem o systemach naginających tę zasadę … -
Powinieneś móc wymusić nazwę
postgres
za pomocą--username=postgres
dla początkowego superużytkownika – chyba że Twój pakiet poważnie zepsuł to wszystko.
Komentarze
- Wow , to wskazało mi właściwy kierunek, w porządku. Wiedziałem, że widziałem gdzieś flagę
-U
i to było stąd: stackoverflow.com/questions/50746147/… Mogłem źle przeczytać odpowiedź Laurenz ', ale uruchomiłeminitdb -U UTF8 -D /var/lib/postgresql/data
i zgadnij co początkowa rola superużytkownika DB była. W każdym razie prawie zawiesiłem cały system z powodu wyczerpania. Dość produktywny dzień. Dziękuję za poświęcenie Erwin, bardzo cenimy twoją pomoc. - @Jakov:
-U UTF8
. Auć. Miało być-E UTF8
Zakładam? Przepraszam za stracony dzień z powodu jednego podstępnie zaszyfrowanego listu. Z drugiej strony: gdybyś na początku pokazał swoje aktualne polecenie w pytaniu, moglibyśmy zaoszczędzić pół dnia …
role "postgres" does not exist
: nie ma roli bazy danych o nazwie " postgres ". Czy jest to jedyna instalacja Postgresa na tym samym komputerze? (Więc na pewno łączysz się z właściwą instancją?) Jeśli tak, pytanie brzmi: jaka rola bazy danych jest konfigurowana przez twoją instalację. Nie ' nie znam na tyle Void Linuksa ani menedżera pakietów XPBS, aby powiedzieć więcej. Może lepiej pasować do superuser.SE lub unix.SE.initdb
, a następnie połącz się z użytkownikiem systemu operacyjnego o tej samej nazwie, aby uzyskać dostęp przez " trust " metoda uwierzytelniania. Oczywiście nie " postgres " (co byłoby rozsądną wartością domyślną).session_replication_role = 'origin'
. Wydaje mi się, że nie jest to zbyt przydatne.:%s/XPBS/XBPS/g