Esecuzione del server PostgreSQL su Void Linux. Dopo linstallazione ha eseguito initdb come utente del sistema operativo “postgres”:

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

Output ricevuto:

creazione directory / var / lib / postgresql / data … ok creazione di sottodirectory … ok selezione di max_connections predefinite … 100 selezione di default shared_buffers … 128MB selezione di dynamic shared implementazione della memoria … posix creazione dei file di configurazione … ok esecuzione dello script di bootstrap … ok esecuzione dellinizializzazione post-bootstrap … locale: impossibile impostare LC_MESSAGES alla localizzazione predefinita: nessun file o directory di questo tipo ok sincronizzazione dei dati su disco … ok

ATTENZIONE: abilitare lautenticazione “trust” per le connessioni locali Puoi cambiarlo modificando pg_hba.conf o usando lopzione -A, o –auth-local e –auth-host, la prossima volta esegui initdb.

Operazione riuscita. Ora puoi avviare il server del database utilizzando: pg_ctl -D / var / lib / postgresql / data -l logfile start

Ho quindi proceduto alla creazione del servizio, concesso la proprietà a “postgres” e avviato:

[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 

In esecuzione:

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

mi darà il seguente errore:

psql: FATAL: role "postgres" does not exist 

Ho “provato a concedere la proprietà di /etc/sv/postgresql a “postgres”, ma senza fortuna.

Queste erano le mie fonti:

https://wiki.voidlinux.eu/PostgreSQL

Errore PostgreSQL: irreversibile: il ruolo “nome utente” non esiste

Non so cosa fare dopo.

EDIT: inciampato su psql: FATAL: il ruolo “postgres” no esistono . Impossibile eseguire psql -l perché ottengo lo stesso errore, indipendentemente dallutente che eseguo psql come.

Commenti

  • Dicci quale versione di Postgres stai tentando di installare e dove hai ottenuto il pacchetto. Il messaggio di errore è abbastanza chiaro: role "postgres" does not exist: non esiste un ruolo del database denominato " postgres ". È lunica installazione di Postgres sulla stessa macchina? (Quindi sei sicuro di connetterti allistanza giusta?) In tal caso, la domanda è: quale ruolo del database è impostato dalla tua installazione. Non ' so abbastanza Void Linux o il gestore di pacchetti XPBS per aggiungere altro. Potrebbe essere più adatto per superuser.SE o unix.SE.
  • La versione è postgresql-9.6.10_1. Sì, ' è lunica installazione di PostgreSQL sul mio sistema e cè solo unistanza del server in esecuzione. Allora dovrei spostare la domanda? Non ' non so …
  • Non sono sicuro che ci siano esperti VOID Linux o XPBS qui intorno … La chiave è trovare il nome del Ruolo Postgres creato da initdb, quindi connettiti con lutente del sistema operativo con lo stesso nome per ottenere laccesso da " trust " metodo di autenticazione. Ovviamente non " postgres " (che sarebbe il corretto valore predefinito).
  • Ho pensato lo stesso, ma ho ' non è riuscito a trovare il ruolo. Come ho menzionato nella domanda, non posso ' t psql, quindi posso ' t elencare i ruoli esistenti. Cè forse qualcosa di rilevante scritto nel file postgresql.conf? Qualcosa che dovrei cercare? Ho ' ho il ruolo grep e ho ottenuto session_replication_role = 'origin'. Non molto utile, credo.
  • :%s/XPBS/XBPS/g

Risposta

Non una risposta completa, ma considera il manuale su initdb qui :

-U username
--username= username

Seleziona il nome utente del superutente del database. Il valore predefinito è il nome dellutente effettivo che esegue initdb. Non è davvero importante quale sia il nome del superutente, ma si potrebbe scegliere di mantenere il nome abituale postgres, anche se il nome dellutente del sistema operativo è diverso.

Significato …

  1. Quando si esegue initdb come utente del sistema operativo postgres, anche il ruolo di superutente DB iniziale è postgres, in Postgres standard. Ho sentito parlare di sistemi che piegano questa regola …

  2. Dovresti essere in grado di forzare il nome postgres con --username=postgres per il superutente iniziale, a meno che il tuo pacchetto non abbia seriamente incasinato tutto questo.

Commenti

  • Wow , questo mi ha indirizzato nella giusta direzione, daccordo. Sapevo di aver visto quel -U flag da qualche parte ed era da qui: stackoverflow.com/questions/50746147/… Potrei aver letto male la risposta di Laurenz ' lì, ma ho eseguito initdb -U UTF8 -D /var/lib/postgresql/data e indovina un po il ruolo di superutente DB iniziale era. Ad ogni modo, ho finito per mandare in crash il mio intero sistema a causa dellesaurimento. Una giornata abbastanza produttiva. Grazie per la tua dedizione Erwin, il tuo aiuto è molto apprezzato.
  • @Jakov: -U UTF8. Ahia. Doveva essere -E UTF8 presumo? Ci scusiamo per la tua giornata persa a causa di una subdola lettera criptata. Poi di nuovo: se tu avessi mostrato il tuo vero comando nella domanda per cominciare, avremmo potuto risparmiare metà della tua giornata …

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *