Kjører PostgreSQL-server på Void Linux. Etter installasjon kjørte initdb som OS-bruker «postgres»:

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

Mottatt utdata:

oppretter katalog / var / lib / postgresql / data … ok oppretter underkataloger … ok velger standard maks.forbindelser … 100 velger standard delt_buffere … 128 MB velger dynamisk delt minneimplementering … posix oppretter konfigurasjonsfiler … ok kjører bootstrap-skript … ok utfører initialisering etter bootstrap … språk: Kan ikke sette LC_MESSAGES til standard språk: Ingen slik fil eller katalog ok synkroniserer data til disk … ok

ADVARSEL: aktivering av «tillit» -autentisering for lokale tilkoblinger Du kan endre dette ved å redigere pg_hba.conf eller ved å bruke alternativet -A, eller –auth-local og –auth-host, neste gang du kjører initdb.

Suksess. Du kan nå starte databaseserveren ved å bruke: pg_ctl -D / var / lib / postgresql / data -l logfile start

Jeg fortsatte da med å opprette tjenesten, gi eierskapet 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 

Kjører:

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

vil gi meg følgende feil:

psql: FATAL: role "postgres" does not exist 

Jeg har prøvd å gi eierskap til /etc/sv/postgresql til «postgres», men ikke lykke.

Dette var mine kilder:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQL-feil: Fatal: rollen “brukernavn” eksisterer ikke

Jeg vet ikke hva jeg skal gjøre videre.

EDIT: Snublet over psql: FATAL: rollen «postgres» gjør ikke eksisterer . Kan ikke kjøre psql -l fordi jeg får den samme feilen, uansett hvilken bruker jeg kjører psql som.

Kommentarer

  • Fortell oss hvilken versjon av Postgres du prøver å installere, og hvor du har pakken. Feilmeldingen er klar nok: role "postgres" does not exist: det er ingen database-rolle som heter " postgres ". Er det den eneste Postgres-installasjonen på samme maskin? (Så du er sikker på at du kobler til riktig forekomst?) I så fall er spørsmålet: hvilken databaserolle som er satt opp av installasjonen din. Jeg vet ikke ' Void Linux eller XPBS pakkebehandler nok til å si mer. Kan være bedre egnet for superbruker.SE eller unix.SE.
  • Versjonen er postgresql-9.6.10_1. Ja, det er ' den eneste installasjonen av PostgreSQL på systemet mitt, og det er bare en forekomst av serveren som kjører. Skal jeg flytte spørsmålet da? Jeg vet ikke ' …
  • Ikke sikker på at det er noen VOID Linux- eller XPBS-eksperter her … Nøkkelen er å finne navnet på Postgres-rolle opprettet av initdb, og koble deretter til OS-brukeren med samme navn for å få tilgang av " tillit " autentiseringsmetode. Åpenbart ikke " postgres " (noe som ville være den vanlige standard).
  • Jeg skjønte så mye, men jeg ' har kommet til kort med å finne rollen. Som jeg nevnte i spørsmålet, kan jeg ' t psql i det hele tatt, så jeg kan ' t liste opp de eksisterende rollene. Er det noe av relevans skrevet i filen postgresql.conf kanskje? Noe jeg burde se etter? Jeg ' har fått tak i rollen og fikk session_replication_role = 'origin'. Ikke mye bruk av det, føler jeg.
  • :%s/XPBS/XBPS/g

Svar

Ikke et fullstendig svar, men vurder manualen om initdb her :

-U username
--username= username

Velger brukernavnet til databasens superbruker. Dette er som standard navnet på den effektive brukeren som kjører initdb. Det er egentlig ikke viktig hva superbrukerens navn er, men man kan velge å beholde det vanlige navnet postgres, selv om brukerens navn på operativsystemet er annerledes.

Betydning …

  1. Når du kjører initdb som OS-bruker postgres, er den opprinnelige DB-superbrukerrollen postgres også – i standard Postgres. Jeg har hørt om systemer som bøyer denne regelen …

  2. Du bør kunne tvinge navnet postgres med --username=postgres for den første superbrukeren – med mindre pakken din har ødelagt alt dette.

Kommentarer

  • Wow , dette pekte meg i riktig retning, ok. Jeg visste at jeg så at -U flagget et sted, og det var herfra: stackoverflow.com/questions/50746147/… Jeg har kanskje lest Laurenz ' s svar der, men jeg løp initdb -U UTF8 -D /var/lib/postgresql/data og gjett hva den opprinnelige DB-superbrukerrollen var. Uansett, jeg endte med å nesten krasje hele systemet på grunn av utmattelse. En ganske produktiv dag. Takk for ditt engasjement Erwin, din hjelp blir satt stor pris på.
  • @Jakov: -U UTF8. Au. Var ment å være -E UTF8 antar jeg? Beklager dagen du mistet på grunn av et luskent kryptert brev. Så igjen: Hvis du hadde vist den faktiske kommandoen din i spørsmålet til å begynne med, hadde vi kanskje reddet halve dagen din …

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *