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
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 …
-
Når du kjører
initdb
som OS-brukerpostgres
, er den opprinnelige DB-superbrukerrollenpostgres
også – i standard Postgres. Jeg har hørt om systemer som bøyer denne regelen … -
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øpinitdb -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 …
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.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).session_replication_role = 'origin'
. Ikke mye bruk av det, føler jeg.:%s/XPBS/XBPS/g