2013-08-09 20 views
5

Sono nuovo in questo tipo di database e provo a connettermi tramite la riga di comando specificando psql e quindi inserendo la password come vuota. Ottengo l'errore sopra riportato (nel titolo di questa domanda).psql fe_sendauth nessuna password fornita

Non so quale sia la password predefinita.

file di pg_hba:

 IPv4 local connections: 
    host all    all    127.0.0.1/32   trust 
    # IPv6 local connections: 
    host all    all    ::1/128     trust 
    # Allow replication connections from localhost, by a user with the 
    # replication privilege. 
    host replication  DIMA  127.0.0.1/32   trust 
    host replication  DIMA  ::1/128     trust 

postgresql.config

listen_addresses = '*'  # what IP address(es) to listen on; 
        # comma-separated list of addresses; 
        # defaults to 'localhost', '*' = all 
        # (change requires restart) 
port = 5432    # (change requires restart) 

ho riavviare il server in questo modo:

C:\metasploit\postgresql\bin\pg_ctl -D "C:\metasploit\postgresql\myData" -l logfile start 

Tutto quello che voglio è quello di entrare nel database e cambiare la mia password . E preferibilmente immettere PgAdmin-III (in formato GUI)

risposta

0

Se si stesse utilizzando l'autenticazione trust (che si dovrebbe usare solo per lo sviluppo, se in quel momento) non si riceverebbe una password entro il psql.

Direi che non hai riavviato correttamente il server. Forse utilizzare restart anziché start?

+0

Anche questo errore. Non ha nulla a che fare con il riavvio del database. PG richiede una password con 'psql --username = postgres --host = localhost' ma non con' psql --username = postgres', anche se i due dovrebbero essere logicamente equivalenti. – Cerin

+1

@Cerin I due non sono equivalenti su piattaforme che supportano socket unix. Quest'ultimo usa TCP/IP a qualsiasi indirizzo IP 'localhost' come risolve. Il primo è in realtà come dire 'psql --username = postgres --host =/var/run/pgsql' (o dovunque la tua' unix_socket_directory' è). Non mi piace molto quell'interfaccia utente, ma non si può davvero cambiare ora. Su Windows sarebbero equivalenti perché non supporta i socket unix. –

0

Come ha detto Craig, probabilmente non è stato riavviato il server e si dovrebbe utilizzare il riavvio anziché avviare. (ricaricare potrebbe funzionare anche se non è così sicuro su Windows)

Ma questo non è un problema. Il problema chiave è quasi certamente che non ti stai connettendo a localhost e che ci sono linee nel tuo pg_hba.conf che richiedono password da altri host.

Nota: se ci si connette a un indirizzo IP esterno, verrà applicata una regola diversa o più generale.

Questo errore significa, in pratica, che il file pg_hba.conf è impostato su autenticazione tramite password ma non è stata fornita alcuna password. Se non riesci a trovare rapidamente il problema, quale indirizzo IP della connessione deve essere nel file di registro postgresql.

Per quanto riguarda l'utilizzo della fiducia, è consigliabile ripristinarlo dopo aver modificato la password. Normalmente concordo con Craig sul fatto che non si debba usare l'autenticazione di trust al di fuori dello sviluppo, ma si tratta di un approccio legittimo alle reimpostazioni di password di utenti importanti, e su Windows, questo deve essere fatto in modi ben supportati sulla piattaforma.

Come nota finale, la domanda è come si sta effettuando l'accesso. Se si sta per impostare questo, è consigliabile utilizzare psql -h 127.0.0.1 [dbname] per assicurarsi che Windows non faccia qualcosa di strano come provare a connettersi utilizzando il nome del computer (e quindi IP esterno).

Problemi correlati