2010-12-30 20 views
16

Ho creato un utente in questo modo:Impossibile accedere al database PostgreSQL

create user blog with password 'blog'; 

Poi mi ha reso il proprietario di un database:

alter database blog_development owner to blog; 

Poi ho cercato di accedere e didn 't lavoro:

$ psql -d blog_development -U blog -W 
Password for user blog: 
psql: FATAL: Ident authentication failed for user "blog" 

Qualsiasi idea del perché?

Una cosa che ho provato è la modifica pg_hba.conf

76 # Database administrative login by UNIX sockets 
77 local all    postgres       ident 
78 
79 # TYPE DATABASE   USER  CIDR-ADDRESS   METHOD 
80 
81 # "local" is for Unix domain socket connections only 
82 local all    all        ident 
83 # IPv4 local connections: 
84 host all    all   127.0.0.1/32   md5 
85 host blog_development blog  127.0.0.1/32   md5 
86 # IPv6 local connections: 
87 host all    all   ::1/128    md5 

Linea 85 è quello che ho aggiunto. Ho riavviato PostgreSQL dopo questo, ma non sembra aver cambiato nulla.

+0

È interessante notare che, posso entrare da remoto tramite pgAdmin III (dopo l'aggiunta di un'altra linea di 'pg_hba.conf'), ma io ancora non riesco ad entrare dalla riga di comando. –

+0

Inoltre, posso connettermi tramite uno script PHP. Sto iniziando a pensare che sto cercando di accedere nel modo sbagliato. –

risposta

31

Stavo solo cercando di collegare in modo sbagliato. Ecco la strada giusta:

psql -h localhost -U blog -d blog_development 
+3

sì, senza un pgsql -h host tenta di accedere a sui socket Unix locali ovvero la riga che inizia con il locale e si conclude con ident è quello che sta ottenendo nel senso. –

1

Hanno aggiunto che l'utente pg_hba.conf? Ecco la documentazione.

http://www.postgresql.org/docs/8.4/static/auth-pg-hba-conf.html

non mi ricordo la sintassi esatta, ma si dovrebbe aggiungere qualcosa di simile:

host blog_development  blog 127.0.0.1/32 md5 

Potrebbe essere necessario ricaricare o riavviare il server in modo che pg_hba.conf viene riletto.

+0

Hmm. Ci ho provato ma non sembrava funzionare. Guarda la mia modifica per vedere cosa ho cambiato. –

5

psql utilizza un socket locale di default (check out bandiera -h nell'uomo) - che dovrebbe corrispondere linea 82 quando si accede

82 locale tutti tutti ident.

ident ha bisogno di un utente reale nel sistema per verificare la password. Quindi puoi collegarti per host o aggiungere un utente in modo che corrisponda alla tua nuova linea di configurazione.

+0

Oppure cambia il locale tutto ident in qualcos'altro. –

4

Prima linea 82, aggiungere

local blog_development blog md5 

e ricaricare o collegare utilizzando -h localhost.

Problemi correlati