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
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 …
-
Når du kører
initdb
som OS-brugerpostgres
, den oprindelige DB-superbrugerrolle er ogsåpostgres
– i standard Postgres. Jeg har hørt om systemer, der bøjer denne regel … -
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øbinitdb -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 …
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.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).session_replication_role = 'origin'
. Jeg føler ikke meget brug af det.:%s/XPBS/XBPS/g