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
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 …
-
När du kör
initdb
som OS-användarepostgres
, den ursprungliga DB-superanvändarrollen ärpostgres
också – i standard Postgres. Jag har hört talas om system som böjer denna regel … -
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 spranginitdb -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 …
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.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).session_replication_role = 'origin'
. Det känner jag inte så mycket av.:%s/XPBS/XBPS/g