2013-01-26 9 views
9

Apparentemente questa è una domanda piuttosto difficile da chiedere perché, per quanto semplice, a nessuno sembra aver risposto.

Ho PostgreSQL in esecuzione su server ubuntu 12.10 (senza GUI).

Il mio obiettivo - la mia domanda - è quello di creare un database denominato "mydb" e un utente "admin" in modo tale che posso dare questo comando come un utente ordinario dal guscio e la connessione al database:

$ psql -U admin -d mydb

Ma non riesco a trovare la risposta a questo ovunque.

posso accedere come utente postgres dal comando su ed eseguendo il psql comando:

$ sudo su -m postgres 
[email protected]:~$ psql 
psql (9.1.7) 
Type "help" for help. 

postgres=# 

ho capito come creare un database denominato "mydb" e un utente "admin "in modo tale che:

postgres=# \du 
Role name |     List of roles Attributes  | Member of 
-----------+------------------------------------------------ 
admin  | Superuser, Create role, Create DB    | {} 
postgres | Superuser, Create role, Create DB, Replication | {} 

devo non capito come fare in modo che l'utente 'admin' in grado di connettersi al 'database di mydb' - forse qualcuno con tali privilegi non è necessario? [Mentre scrivo, mi accorgo che forse dovrei revocare i privilegi di superutente da admin.]

E quello che voglio sapere è come collegare da shell un normale utente :

$ psql -U postgres 
psql: FATAL: Peer authentication failed for user "postgres" 

Ci sono ipotesi sicuramente non scritte sull'esecuzione di PostgreSQL che sto fraintendendo, ma un paio d'ore di ricerche, di tutorial, ecc., non hanno risolto il problema. Sarò perfettamente felice se qualcuno dice che è già stata data una risposta, soprattutto se è così. Presumo e spero che la risposta sia semplice e apprezzo il tuo aiuto.

Grazie, ge

risposta

8

Da l'errore-messaggio, sembra che l'autenticazione-impostazioni non sono state impostate correttamente.

Oltre alle impostazioni nel database stesso, PostgreSQL utilizza anche un file di configurazione (pg_hba.conf) che specifica quali meccanismi di autenticazione possono essere utilizzati per utente, host e database. È possibile specificare che gli utenti possano connettersi solo tramite password/password md5 o anche 'nessuna autenticazione richiesta'

Attualmente la configurazione utilizza probabilmente l'autenticazione "peer" per tutti gli utenti, il che significa semplicemente: consentire solo a quell'utente se è attualmente utente che ha effettuato l'accesso (ad esempio, l'utente della shell dovrebbe essere chiamato "admin"). Dalla tua domanda, questo è non quello che vuoi, probabilmente vorrai usare la password o il meccanismo di autenticazione md5.

Penso che queste pagine vi darà la risposta che cercavi:

http://web.archive.org/web/20131001194046/http://blog.deliciousrobots.com/2011/12/13/get-postgres-working-on-ubuntu-or-linux-mint/ (versione archiviata)

documentazione ufficiale:

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

Ricordati di ricaricare PostgreSQL dopo aver modificato il pg_hba. file conf!

aggiornamento

Il blog-post originale di cui ho parlato e 'ora offline, il link ora punta a una versione archiviata. Grazie a @O_the_Del per la segnalazione.

+0

Grazie tu così tanto. Devo scappare ma andrò oltre la risposta e i link quando torno. – zabouti

+0

Spero che funzioni. PostgreSQL è un ottimo database, ma in alcune situazioni ha una curva di apprendimento piuttosto ripida – thaJeztah

+0

thaJeztah - Non riesco a scrivere ciò che ho fatto in un commento, ma in fondo, il tuo consiglio ha funzionato. Grazie mille! – zabouti

5

Su Debian, PostgreSQL ascolta di default su localhost, quindi se avete una regola in pg_hba.conf che consente connessioni TCP/IP, è possibile utilizzare il parametro -h per abbinare questa regola:

psql -U admin -h localhost mydb