PostgreSQL-server draaien op Void Linux. Na installatie liep initdb als OS-gebruiker “postgres”:

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

Ontvangen uitvoer:

map / var / lib / postgresql / data aanmaken … ok submappen aanmaken … ok standaard max_connections selecteren … 100 standaard shared_buffers selecteren … 128 MB dynamisch gedeeld selecteren geheugenimplementatie … posix maakt configuratiebestanden aan … ok bootstrap-script uitvoeren … ok post-bootstrap-initialisatie uitvoeren … locale: Kan LC_MESSAGES niet instellen op standaard locale: geen bestand of directory ok gegevens synchroniseren naar schijf … ok

WAARSCHUWING: “trust” authenticatie inschakelen voor lokale verbindingen Je kunt dit veranderen door pg_hba.conf te bewerken of de optie -A te gebruiken, of –auth-local en –auth-host, de volgende keer u voert initdb uit.

Succes. U kunt nu de databaseserver starten met: pg_ctl -D / var / lib / postgresql / data -l logfile start

Ik “ben vervolgens doorgegaan met het maken van de service, geef het eigendom aan” postgres “en start het:

[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 

Actief:

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

geeft me de volgende foutmelding:

psql: FATAL: role "postgres" does not exist 

Ik heb geprobeerd het eigendom van /etc/sv/postgresql naar “postgres”, maar geen geluk.

Dit waren mijn bronnen:

https://wiki.voidlinux.eu/PostgreSQL

PostgreSQL-fout: fataal: rol “gebruikersnaam” bestaat niet

Ik weet niet wat ik nu moet doen.

EDIT: Stumbled upon psql: FATAL: role “postgres” niet bestaan . Kan psql -l niet uitvoeren omdat ik dezelfde fout krijg, ongeacht welke gebruiker ik psql gebruik als.

Opmerkingen

  • Vertel ons welke versie van Postgres je probeert te installeren en waar je het pakket vandaan hebt gehaald. De foutmelding is duidelijk genoeg: role "postgres" does not exist: er is geen databaserol met de naam " postgres ". Is dit de enige Postgres-installatie op dezelfde computer? (U weet dus zeker dat u verbinding maakt met de juiste instantie?) Zo ja, dan is de vraag: welke databaserol wordt door uw installatie ingesteld. Ik ken ' niet genoeg Void Linux of de XPBS-pakketbeheerder om meer te zeggen. Is misschien beter geschikt voor superuser.SE of unix.SE.
  • De versie is postgresql-9.6.10_1. Ja, het ' is de enige installatie van PostgreSQL op mijn systeem en er is maar één exemplaar van de server actief. Moet ik de vraag dan verplaatsen? Ik weet het niet ' …
  • Ik weet niet zeker of er hier VOID Linux- of XPBS-experts zijn … De sleutel is om de naam van de Postgres-rol gemaakt door initdb, en maak vervolgens verbinding met de OS-gebruiker met dezelfde naam om toegang te krijgen door de " trust " authenticatiemethode. Uiteraard niet " postgres " (wat de normale standaard zou zijn).
  • Ik dacht zo veel, maar ik ' zijn tekortgeschoten bij het vinden van de rol. Zoals ik in de vraag al zei, kan ik ' t psql helemaal niet gebruiken, dus ik kan ' de bestaande rollen vermelden. Is er misschien iets relevants geschreven in het bestand postgresql.conf? Iets waar ik naar moet zoeken? Ik ' heb een greped rol en heb session_replication_role = 'origin'. Ik heb daar niet veel gebruik van, vind ik.
  • :%s/XPBS/XBPS/g

Antwoord

Geen volledig antwoord, maar bekijk de handleiding over initdb hier :

-U username
--username= username

Selecteert de gebruikersnaam van de databasesuperuser. Dit is standaard de naam van de effectieve gebruiker die initdb draait. Het is echt niet belangrijk wat de naam van de supergebruiker is, maar men zou ervoor kunnen kiezen om de gebruikelijke naam postgres te behouden, zelfs als de naam van de gebruiker van het besturingssysteem anders is.

Betekenis …

  1. Bij het uitvoeren van initdb als OS-gebruiker postgres, is de initiële rol van DB-superuser ook postgres – in standaard Postgres. Ik heb gehoord dat systemen deze regel buigen …

  2. Je zou in staat moeten zijn om forceren de naam postgres met --username=postgres voor de eerste supergebruiker – tenzij je pakket hier serieus mee heeft geknoeid.

Reacties

  • Wauw , dit wees me in de goede richting, oké. Ik wist dat ik die -U vlag ergens zag en het was vanaf hier: stackoverflow.com/questions/50746147/… Ik heb het antwoord van Laurenz ' daar misschien verkeerd gelezen, maar ik heb initdb -U UTF8 -D /var/lib/postgresql/data uitgevoerd en raad eens de initiële rol van DB-superuser was. Hoe dan ook, ik crashte bijna mijn hele systeem vanwege uitputting. Een redelijk productieve dag. Bedankt voor je toewijding Erwin, je hulp wordt zeer gewaardeerd.
  • @Jakov: -U UTF8. Au. Was bedoeld om -E UTF8 te zijn, neem ik aan? Sorry voor je verloren dag vanwege een stiekeme door elkaar gegooide brief. Maar nogmaals: als u uw daadwerkelijke commando in de vraag had getoond om mee te beginnen, hadden we misschien de helft van uw dag bespaard …

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *