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

  • Řekněte nám, kterou verzi Postgres se pokoušíte nainstalovat a kde jste balíček dostali. Chybová zpráva je dostatečně jasná: 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.
  • Verze je postgresql-9.6.10_1. Ano, je to ' jediná instalace PostgreSQL v mém systému a běží pouze jedna instance serveru. Mám tedy otázku posunout? Nevím ' nevím …
  • nejsem si jistý, zda jsou tady experti na VOID Linux nebo XPBS … klíčem je najít jméno Role Postgres vytvořená 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í).
  • Myslel jsem to stejně, ale já ' hledání role jsem nedosáhl. Jak jsem zmínil v otázce, nemohu ' t psql vůbec, takže nemohu ' vypsat existující role. Je v souboru postgresql.conf napsáno něco důležitého? Něco, co bych měl hledat? ' jsem pozdravil roli a dostal session_replication_role = 'origin'. Cítím, že to moc nepoužívám.
  • :%s/XPBS/XBPS/g

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 …

  1. Při spuštění initdb jako uživatele OS postgres, 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 …

  2. 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 jsem initdb -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 …

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *