Spuštění serveru PostgreSQL na systému Void Linux. Po instalaci běžel initdb
jako uživatel OS „postgres“:
[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data"
Přijatý výstup:
vytváření adresáře / var / lib / postgresql / data … ok vytváření podadresářů … ok výběr výchozí max_connections … 100 výběr výchozí shared_buffers … 128 MB výběr dynamické sdílené implementace paměti … posix vytváření konfiguračních souborů … ok běží bootstrap skript … ok provádí inicializaci po bootstrapu … národní prostředí: Nelze nastavit LC_MESSAGES na výchozí národní prostředí: Žádný takový soubor nebo adresář ok synchronizace dat na disk … ok
UPOZORNĚNÍ: povolení ověřování „důvěryhodnosti“ pro místní připojení Můžete to změnit úpravou souboru pg_hba.conf nebo použitím možnosti -A nebo –auth-local a –auth-host, příště spustíte initdb.
Úspěch. Nyní můžete databázový server spustit pomocí: pg_ctl -D / var / lib / postgresql / data -l začátek logfile
Poté jsem vytvořil službu, přidělil vlastnictví „postgres“ a spustil ji:
[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
Spuštěno:
[user@host]$ sudo -u postgres psql ...
zobrazí následující chybu:
psql: FATAL: role "postgres" does not exist
Zkoušel jsem udělit vlastnictví /etc/sv/postgresql
to „postgres“, ale bez štěstí.
Toto byly mé zdroje:
https://wiki.voidlinux.eu/PostgreSQL
Chyba PostgreSQL: Fatální: role „uživatelské jméno“ neexistuje
Nevím, co dělat dál.
EDIT: Narazil na psql: FATAL: role „postgres“ není existují . Nelze spustit psql -l
, protože se mi zobrazuje stejná chyba bez ohledu na to, jaké uživatele spustím psql
jako.
Komentáře
Odpovědět
Není to úplná odpověď, ale zvažte příručku o initdb
zde :
-U
username
--username=
username
Vybere uživatelské jméno databázového superuživatele. Výchozí nastavení je jméno efektivního uživatele spuštěného
initdb
. Opravdu není důležité, jaké je jméno superuživatele, ale je možné si ponechat obvyklé jméno postgres, i když se jméno uživatele operačního systému liší.
Význam …
-
Při spuštění
initdb
jako uživatele OSpostgres
, počáteční role superuživatele DB je taképostgres
– ve standardním Postgresu. Slyšel jsem o systémech ohýbajících toto pravidlo … -
Měli byste být schopni vynutit název
postgres
pomocí--username=postgres
pro počátečního superuživatele – pokud se váš balíček s tím vším vážně nepopletl.
Komentáře
- Páni , to mě nasměrovalo správným směrem, dobře. Věděl jsem, že někde vidím vlajku
-U
a byla odsud: stackoverflow.com/questions/50746147/… Možná jsem tam špatně přečetl Laurenz ' s odpověď, ale běžel jseminitdb -U UTF8 -D /var/lib/postgresql/data
a hádejte co počáteční role superuživatele DB byla. Nakonec jsem téměř vyčerpal celý svůj systém kvůli vyčerpání. Docela produktivní den. Děkujeme vám za vaši obětavost, Erwine, vaše pomoc je velmi ceněna. - @Jakov:
-U UTF8
. Au. Mělo to být-E UTF8
předpokládám? Omlouváme se za váš den ztracený kvůli jednomu záludnému míchanému dopisu. A pak znovu: Pokud jste v otázce nejprve ukázali svůj skutečný příkaz, mohli bychom vám ušetřit polovinu dne …
role "postgres" does not exist
: neexistuje žádná databázová role s názvem " postgres ". Je to jediná instalace Postgres na stejném počítači? (Takže se určitě připojíte ke správné instanci?) Pokud ano, otázka zní: která databázová role je nastavena vaší instalací. ' Nevím Void Linux ani správce balíčků XPBS natolik, abych řekl víc. Může být vhodnější pro superuser.SE nebo unix.SE.initdb
a poté se připojit ke stejnému jménu uživatele operačního systému, kterému má přístup " důvěryhodný " metoda ověřování. Je zřejmé, že ne " postgres " (což by bylo rozumné výchozí nastavení).session_replication_role = 'origin'
. Cítím, že to moc nepoužívám.:%s/XPBS/XBPS/g