Köra PostgreSQL-server på Void Linux. Efter installationen körde initdb som OS-användare ”postgres”:

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

Mottagen utdata:

skapa katalog / var / lib / postgresql / data … ok skapa underkataloger … ok välja standard max_connections … 100 välja standard shared_buffers … 128MB välja dynamisk delad minneimplementering … posix skapar konfigurationsfiler … ok kör bootstrap-skript … ok utför initialisering efter bootstrap … språk: Det går inte att ställa in LC_MESSAGES till standardläge: Ingen sådan fil eller katalog ok synkroniserar data till disk … ok

VARNING: aktiverar ”trust” -autentisering för lokala anslutningar Du kan ändra detta genom att redigera pg_hba.conf eller använda alternativet -A, eller –auth-local och –auth-host, nästa gång du kör initdb.

Framgång. Du kan nu starta databasservern med: pg_ctl -D / var / lib / postgresql / data -l logfile start

Jag fortsatte sedan med att skapa tjänsten, bevilja äganderätten till ”postgres” och starta 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ör:

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

ger mig följande fel:

psql: FATAL: role "postgres" does not exist 

Jag har försökt bevilja ägande av /etc/sv/postgresql till ”postgres”, men ingen tur.

Det här var mina källor:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQL-fel: Fatal: rollen ”användarnamn” finns inte

Jag vet inte vad jag ska göra nästa.

EDIT: Snubblat på psql: FATAL: roll ”postgres” gör inte existerar . Det går inte att köra psql -l eftersom jag får samma fel, oavsett vilken användare jag kör psql som.

Kommentarer

  • Berätta vilken version av Postgres du försöker installera och var du har paketet. Felmeddelandet är tillräckligt tydligt: role "postgres" does not exist: det finns ingen databasroll som heter " postgres ". Är det den enda Postgres-installationen på samma maskin? (Så du är säker på att ansluta till rätt instans?) Om så är fallet är frågan: vilken databasroll som är inställd av din installation. Jag vet inte ' Void Linux eller XPBS-pakethanteraren för att säga mer. Kan passa bättre för superanvändare.SE eller unix.SE.
  • Versionen är postgresql-9.6.10_1. Ja, det är ' den enda installationen av PostgreSQL på mitt system och det finns bara en instans av servern som körs. Ska jag flytta frågan då? Jag vet inte ' …
  • Inte säker på att det finns några VOID Linux- eller XPBS-experter här … Nyckeln är att hitta namnet på Postgres-roll skapad av initdb och anslut sedan till OS-användaren med samma namn för att få åtkomst av " trust " autentiseringsmetod. Uppenbarligen inte " postgres " (vilket skulle vara den vanliga förinställningen).
  • Jag tänkte så mycket, men jag ' har blivit bristfällig med att hitta rollen. Som jag nämnde i frågan kan jag ' t psql alls, så jag kan ' t lista de befintliga rollerna. Finns det något av relevans skrivet i filen postgresql.conf kanske? Något jag borde leta efter? Jag ' har tagit rollen och fått session_replication_role = 'origin'. Det känner jag inte så mycket av.
  • :%s/XPBS/XBPS/g

Svar

Inte ett fullständigt svar, men överväg manualen om initdb här :

-U username
--username= username

Väljer användarnamnet på databas superanvändaren. Detta är som standard namnet på den effektiva användaren som kör initdb. Det är verkligen inte viktigt vad superanvändarens namn är, men man kan välja att behålla det vanliga namnet postgres, även om användarens namn på operativsystemet är annorlunda.

Betydelse …

  1. När du kör initdb som OS-användare postgres, den ursprungliga DB-superanvändarrollen är postgres också – i standard Postgres. Jag har hört talas om system som böjer denna regel …

  2. Du borde kunna tvinga namnet postgres med --username=postgres för den första superanvändaren – såvida inte ditt paket allvarligt trasslat med allt detta.

Kommentarer

  • Wow , detta pekade mig i rätt riktning, okej. Jag visste att jag såg att -U flaggade någonstans och det var härifrån: stackoverflow.com/questions/50746147/… Jag kanske har missläst Laurenz ' s där, men jag sprang initdb -U UTF8 -D /var/lib/postgresql/data den ursprungliga DB-superanvändarrollen var. Hur som helst, jag hamnade nästan hela mitt system på grund av utmattning. En ganska produktiv dag. Tack för ditt engagemang Erwin, din hjälp uppskattas mycket.
  • @Jakov: -U UTF8. Aj. Var tänkt att vara -E UTF8 antar jag? Ledsen för din förlorade dag på grund av ett lömskt krypterat brev. Sedan igen: Om du hade visat ditt faktiska kommando i frågan till att börja med kan vi ha räddat halva dagen …

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *