Archivio

Archivio per la categoria ‘PostgreSQL’

Installare PostgreSQL su Debian

7 dicembre 2009 loade Nessun commento

In questa guida affronteremo la procedura per l’installazione del ORDBMS (Object-Relational Database Management System) PostgreSQL, sviluppato in varie fasi fin dal 1977. Il progetto iniziale si chiamava Ingres e venne sviluppato a Berkeley, presso l’Università della California.Nel 1986 continuò lo sviluppo del codice di Ingres, sempre a Berkeley, per realizzare un sistema di database relazionale ad oggetti chiamato Postgres. Nel 1996, il nome di Postgres venne cambiato in PostgreSQL, in virtù degli accrescimenti funzionali attuati.

Utilizzeremo la modalità d’installazione con i pacchetti debian.

Nello specifico dobbiamo utilizzare il seguente comando.

apt-get install postgresql-8.3

Il sistema vi installerà altri pacchetti aggiuntivi:

postgresql-client-8.3 postgresql-client-common postgresql-common

A questo punto se utilizziamo il client psql di postgresql per connetterci al DB, questo è il messaggio d’errore ricevuto:

psql -l
psql: FATAL:  Ident authentication failed for user “utente”

Il messaggio ci indica che l’utente con il quale stiamo tentando di accedere non è abilitato. In fase d’installazione è stato creato automaticamente l’utente postgres, con il quale, per il momento, possiamo accedere al server postgresql.

sudo su – postgres

psql -l
Lista dei database
Nome | Proprietario | Codifica
———–+————–+———-
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(3 rows)

Ora vediamo come configurare l’accesso ad altri utenti oltre a postgres. La modalità d’accesso ad un DB PostgreSQL viene stabilita dentro il file :

/etc/postgresql/versione/main/pg_hba.conf

Analizziamo il contenuto del file pg_hba.conf.

# Database administrative login by UNIX sockets
local all postgres ident sameuser

# TYPE DATABASE USER CIDR-ADDRESS METHOD

# “local” is for Unix domain socket connections only
local all all ident sameuser
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5

La prima riga identifica l’amministratore del DB, nel caso specifico postgres, mentre le altre righe sono di facile comprensione. Quello che va detto è riferito alla colonna METHOD, ovvero il metodo d’autenticazione del client, che differisce dai permessi sul DB.

Analizziamo i metodi d’autenticazione:

  • trust: Permette a qualsiasi utente proveniente dall’host, indicato in CIDR-ADDRESS, di connettersi senza usare una password.
  • reject: Nega automaticamente l’accesso per quell’host o quell’utente.
  • password: Indica che deve esistere una password per ogni utente abilitato ad accedere dentro la tabella di sistema pg_shadow, la password viene inviata in chiaro.
  • crypt: Simile al metodo password, solo che la password viene inviata criptata.
  • krb5: Autenticazione mediante il sistema Kerberos.
  • ident: Dovrebbe essere creata dentro il file pg_ident.conf una mappa con utente e password che hanno l’accesso. Con l’opzione sameuser indica che il client si può connettere solo al database che ha come nome lo stesso nome dell’utente. Deve essere, prima, creato un db e un utente con il superuser postgres.

Quindi nel nostro caso utilizzeremo il seguente schema:

# TYPE  DATABASE    USER        CIDR-ADDRESS          METHOD
local   all         all                                 password

A questo punto possiamo accedere con il nuovo utente creato.