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
.
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
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à chiamatopostgres
. 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.
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.
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;
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)
Questo funziona per me:
psql -h localhost -U postgres
Metodo di lavoro,
vi /etc/postgresql/9.3/main/pg_hba.conf
local all postgres peer
here change peer to trust riavvio, Sudo service postgresql restart
ora prova, psql -U postgres
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.
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
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
Segui questi passaggi e funzionerà per te:
msfconsole
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
msfconsole: msf>db_status
vedrete che è connesso.Per Windows utenti: psql -U postgres
Dovresti vedere quindi l'interfaccia della riga di comando su PostgreSQL: postgres=#
psql postgres
postgres=# CREATE ROLE username superuser;
postgres=# ALTER ROLE username WITH LOGIN;