it-swarm-eu.dev

Errore PostgreSQL: Fatal: il ruolo "username" non esiste

Sto configurando il mio PostgreSQL 9.1. Non posso fare nulla con PostgreSQL: non può createdb, can not createuser; tutte le operazioni restituiscono il messaggio di errore

Fatal: role h9uest does not exist

h9uest è il mio nome account e I Sudo apt-get install PostgreSQL 9.1 con questo account.
L'errore simile persiste per l'account root.

549
h9uest

Utilizza l'utente del sistema operativo postgres per creare il tuo database, purché non hai impostato un ruolo database con i privilegi necessari che corrispondono all'utente del tuo sistema operativo con lo stesso nome (h9uest nel tuo Astuccio):

Sudo -u postgres -i

Come raccomandato qui o qui .

Quindi riprova. Digitare exit quando viene eseguito con il funzionamento come utente di sistema postgres.

O esegue il singolo comando createuser come postgres con Sudo, come dimostrato da drees in un'altra risposta.

Il punto è utilizzare l'utente del sistema operativo che corrisponde al ruolo del database con lo stesso nome per ottenere l'accesso tramite ident authentication . postgres è l'utente del sistema operativo predefinito che ha inizializzato il cluster del database. Il manuale:

Per avviare il sistema di database, un nuovo il sistema contiene sempre un ruolo predefinito. Questo ruolo è sempre un "Superuser", e per impostazione predefinita (a meno che non venga modificato durante l'esecuzione di initdb) esso avrà lo stesso nome dell'utente del sistema operativo inizializzato il cluster di database. Abitualmente, questo ruolo sarà chiamato postgres. Per creare più ruoli devi prima connetterti come questo ruolo iniziale.

Ho sentito di configurazioni strane con nomi utente non standard o in cui l'utente del sistema operativo non esiste. Dovresti adattare la tua strategia lì.

Leggi di i ruoli del database e l'autenticazione del client nel manuale.

636

Dopo aver provato molte altre soluzioni per i popoli, e senza successo, questa risposta mi ha finalmente aiutato. 

https://stackoverflow.com/a/16974197/2433309

In breve, correndo

Sudo -u postgres createuser owning_user

crea un ruolo con nome owning_user (in questo caso, h9uest). Successivamente è possibile eseguire rake db:create dal terminale con qualsiasi nome account impostato senza dover accedere all'ambiente postgres.

245
drees
Sudo su - postgres

psql template1

creando un ruolo su pgsql con privilegio come "superutente"

CREATE ROLE username superuser;
eg. CREATE ROLE demo superuser;

Quindi crea utente 

CREATE USER username; 
eg. CREATE USER demo;

Assegna il privilegio all'utente

GRANT ROOT TO username;

E poi abilita l'accesso a quell'utente, così puoi eseguire e.g .: psql template1, dal normale terminale $:

ALTER ROLE username WITH LOGIN;
107
Mohammed Saleem

L'installazione di postgres usando apt-get non crea un ruolo utente o un database.

Per creare un ruolo superuser e un database per il tuo account utente personale:

Sudo -u postgres createuser -s $(whoami); createdb $(whoami)

73
Miles Erickson

Questo funziona per me:

psql -h localhost -U postgres
62

Metodo di lavoro,

  1. vi /etc/postgresql/9.3/main/pg_hba.conf
  2. local all postgres peerhere change peer to trust
  3. riavvio, Sudo service postgresql restart

  4. ora prova, psql -U postgres

8

Nel prompt utente locale, non utente root, digitare

Sudo -u postgres createuser <local username>

Quindi inserire la password per l'utente locale.

Quindi inserisci il comando precedente che ha generato il "nome utente" ruolo "non esiste."

I passaggi sopra descritti hanno risolto il problema per me . In caso contrario, inviare i messaggi del terminale per i passaggi precedenti.

5
Robert Cambil

L'ho installato su macOS e ho dovuto:

cd /Applications/Postgres.app/Contents/Versions/9.5/bin
createuser -U postgres -s YOURUSERNAME
createdb YOURUSERNAME

Ecco la fonte: https://github.com/PostgresApp/PostgresApp/issues/313#issuecomment-192461641

5
Henry

La creazione manuale di un cluster DB lo ha risolto nel mio caso.

Per qualche ragione, quando ho installato Postgres, il "DB iniziale" non è stato creato. Esecuzione di initdb ha fatto il trucco per me.

Questa soluzione è fornita in PostgreSQL Wiki - Primi passi :

initdb

L'installazione di postgres in genere nel sistema operativo crea un "DB iniziale" e avvia il daemon del server Postgres. In caso contrario, è necessario eseguire initdb

1
Natacha

Segui questi passaggi e funzionerà per te:

  1. eseguire msfconsole
  2. digita db_console 
  3. alcune informazioni ti verranno mostrate le informazioni che ti chiedono di fare: db_connect user:[email protected]:port.../database scusa non me lo ricordo ma è come questo, quindi sostituisci l'utente e la password e l'host e il database con le informazioni incluse nel database.yml in la postazione: /usr/share/metasploit-framework/config 
  4. vedrai. ricostruire la cache del modello in background. 
  5. Digitare apt-get update && apt-get upgrade dopo l'aggiornamento riavviare il terminale e pranzo msfconsole e funziona è possibile controllare che digitando msfconsole: msf>db_status vedrete che è connesso.
1
Loli Pronoms

Per Windows utenti: psql -U postgres

Dovresti vedere quindi l'interfaccia della riga di comando su PostgreSQL: postgres=#

0
Andriy Tolstoy
psql postgres

postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;
0
Abel