Hmmm ...
Se riesci a connetterti con il nome utente e la password in pgAdminIII ma non riesci a connetterti, psql
probabilmente quei due programmi si stanno collegando al database in modo diverso.
[Se ci si connette a database diversi, provare innanzitutto a connettersi allo stesso database. Vedi sotto.]
Da PostgreSQL: Documentazione: 9.3: psql :
Se si omette il nome host, psql si connetterà tramite un socket di dominio Unix a un server sull'host locale o tramite TCP / IP a localhost su macchine che non dispongono di socket di dominio Unix.
Se non stai eseguendo qualcosa di simile psql ... -h host_name ...
e stai eseguendo Ubuntu, psql
dovresti connetterti tramite un socket di dominio Unix, quindi PostgreSQL probabilmente non è configurato per consentire uno dei metodi di autenticazione della password per l' utente postgres .
Puoi testarlo eseguendo:
sudo -u postgres psql
Se quanto sopra funziona, il tuo server è probabilmente configurato per utilizzare l' autenticazione peer per le connessioni locali da parte dell'utente postgres , vale a dire chiedere al sistema operativo il tuo nome utente per confermare che sei postgres .
Quindi è probabilmente il tuo pg_hba.conf file
Il percorso completo del file sarà simile a /etc/postgresql/9.3/main/pg_hba.conf . Puoi visualizzarlo per es sudo cat /etc/postgresql/9.3/main/pg_hba.conf | more
.
Se si omette il nome host nel psql
comando, si dovrebbe essere in grado di connettersi se si aggiunge la seguente voce al file pg_hba.conf :
# Connection type Database User IP addresses Method
local all postgres md5
[Le righe commentate nel file pg_hba.conf iniziano con #
.]
Se si sta includendo il nome host nel vostro psql
comando, aggiungere questa voce, invece:
# Connection type Database User IP addresses Method
host all postgres 127.0.0.1/32 md5
È necessario inserire la voce prima che qualsiasi altra voce venga abbinata per la connessione tramite psql
. In caso di dubbi su dove inserirlo, inseriscilo prima della prima riga non commentata.
Maggiori informazioni su pg_hba.conf
Da PostgreSQL: Documentazione: 9.3: Il file pg_hba.conf [grassetto mio enfasi]:
Il primo record con un tipo di connessione , indirizzo client , database richiesto e nome utente corrispondenti viene utilizzato per eseguire l'autenticazione. Non esiste "fall-through" o "backup": se viene scelto un record e l'autenticazione fallisce, i record successivi non vengono considerati. Se nessun record corrisponde, l'accesso viene negato.
Si noti che i record non corrispondono al metodo di autenticazione. Quindi, se il tuo file pg_hba.conf contiene la seguente voce:
# Connection type Database User IP addresses Method
local all postgres peer
Quindi non sarai in grado di connetterti tramite:
psql -u postgres
A meno che una di queste voci non sia nel file pg_hba.conf sopra la voce precedente:
# Connection type Database User IP addresses Method
local all postgres md5
local all postgres password # Unencrypted!
local all all md5
local all all password # Unencrypted!