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
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 …
-
Bij het uitvoeren van
initdb
als OS-gebruikerpostgres
, is de initiële rol van DB-superuser ookpostgres
– in standaard Postgres. Ik heb gehoord dat systemen deze regel buigen … -
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 hebinitdb -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 …
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.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).session_replication_role = 'origin'
. Ik heb daar niet veel gebruik van, vind ik.:%s/XPBS/XBPS/g