Kørsel af PostgreSQL-server på Void Linux. Efter installationen kørte initdb som OS-bruger “postgres”:

[user@host]$ sudo -u postgres -i $ initdb -D "/var/lib/postgresql/data" 

Modtaget output:

opretter mappe / var / lib / postgresql / data … ok opretter underkataloger … ok vælger standard maks.forbindelser … 100 vælger standard delt_buffere … 128 MB vælger dynamisk delt hukommelsesimplementering … posix opretter konfigurationsfiler … ok kører bootstrap script … ok udfører initialisering efter bootstrap … landestandard: Kan ikke indstille LC_MESSAGES til standard landestandard: Ingen sådan fil eller mappe ok synkronisering af data til disk … ok

ADVARSEL: aktivering af “tillid” -godkendelse for lokale forbindelser Du kan ændre dette ved at redigere pg_hba.conf eller ved hjælp af indstillingen -A, eller –auth-local og –auth-host, næste gang du kører initdb.

Succes. Du kan nu starte databaseserveren ved hjælp af: pg_ctl -D / var / lib / postgresql / data -l logfile start

Jeg fortsatte derefter med at oprette tjenesten, give ejerskabet til “postgres” og starte den:

[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 

Kører:

[user@host]$ sudo -u postgres psql ... 

giver mig følgende fejl:

psql: FATAL: role "postgres" does not exist 

Jeg har prøvet at give ejerskab til /etc/sv/postgresql til “postgres”, men ikke held.

Dette var mine kilder:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQL-fejl: Fatal: rollen “brugernavn” findes ikke

Jeg ved ikke, hvad jeg skal gøre næste gang.

EDIT: Snuble over psql: FATAL: rolle “postgres” gør ikke eksisterer . Kan ikke køre psql -l, fordi jeg får den samme fejl, uanset hvilken bruger jeg kører psql som.

Kommentarer

  • Fortæl os hvilken version af Postgres du prøver at installere, og hvor du har pakken. Fejlmeddelelsen er klar nok: role "postgres" does not exist: der er ingen database-rolle med navnet " postgres ". Er det den eneste Postgres-installation på den samme maskine? (Så du er sikker på at oprette forbindelse til den rigtige forekomst?) I så fald er spørgsmålet: hvilken database-rolle der er konfigureret af din installation. Jeg kender ikke ' Void Linux eller XPBS pakkehåndtering nok til at sige mere. Kan være bedre egnet til superbruger.SE eller unix.SE.
  • Versionen er postgresql-9.6.10_1. Ja, det er ' den eneste installation af PostgreSQL på mit system, og der er kun en forekomst af serveren, der kører. Skal jeg flytte spørgsmålet? Jeg ved ' ikke …
  • Ikke sikker på, at der er nogen VOID Linux- eller XPBS-eksperter her omkring … Nøglen er at finde navnet på Postgres-rolle oprettet af initdb og forbind derefter med OS-brugeren med samme navn for at få adgang til " tillid " godkendelsesmetode. Åbenbart ikke " postgres " (hvilket ville være den sindssyge standard).
  • Jeg regnede med så meget, men jeg ' er gået kort med at finde rollen. Som jeg nævnte i spørgsmålet kan jeg ' t psql overhovedet, så jeg kan ' t liste de eksisterende roller. Er der noget af relevans skrevet i filen postgresql.conf måske? Noget jeg skulle se efter? Jeg ' har taget rolle og fik session_replication_role = 'origin'. Jeg føler ikke meget brug af det.
  • :%s/XPBS/XBPS/g

Svar

Ikke et fuldt svar, men overvej manualen om initdb her :

-U username
--username= username

Vælger brugernavnet på databasesuperbrugeren. Dette er som standard navnet på den effektive bruger, der kører initdb. Det er virkelig ikke vigtigt, hvad superbrugerens navn er, men man kan vælge at beholde det sædvanlige navn postgres, selvom operativsystembrugerens navn er anderledes.

Betydning …

  1. Når du kører initdb som OS-bruger postgres, den oprindelige DB-superbrugerrolle er også postgres – i standard Postgres. Jeg har hørt om systemer, der bøjer denne regel …

  2. Du skal kunne tvinge navnet postgres med --username=postgres til den oprindelige superbruger – medmindre din pakke alvorligt rodet med alt dette.

Kommentarer

  • Wow , dette pegede mig i den rigtige retning, okay. Jeg vidste, at jeg så, at -U markerer et sted, og det var herfra: stackoverflow.com/questions/50746147/… Jeg har muligvis misforstået Laurenz ' s svar der, men jeg løb initdb -U UTF8 -D /var/lib/postgresql/data den oprindelige DB-superbrugerrolle var. Under alle omstændigheder endte jeg næsten med at styrte hele mit system på grund af udmattelse. En ret produktiv dag. Tak for din dedikation Erwin, din hjælp er meget værdsat.
  • @Jakov: -U UTF8. Av. Var meningen at være -E UTF8 antager jeg? Beklager din tabte dag på grund af et luskede krypteret brev. Så igen: Hvis du havde vist din faktiske kommando i spørgsmålet til at begynde med, har vi måske reddet halvdelen af din dag …

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *