Installare postgresql (Parte II)

Pagina 2 di 3

Installazione di PostgreSQL

L'installazione di PostgreSQL è praticamenteidentica sia sotto Debian che sotto Ubuntu. Viene lanciato ilclassico comando per l'installazione:

root@localhost:~# aptitude install postgresql

L'installazione procederà, chiedendo di risponderead alcune domande (solitamente è sufficienteacconsentire). E' importante sapere alcune cose:

Data directory: tutti i dati vengono salvati in/var/lib/postgres/data come default.

Data removal policy: per default, quando rimuoviPostgreSQL, i dati vengono preservati.

Locale (inteso nel senso di "impostazionilocali" o "localizzate"): deve essere sceltoin modo da accettare la codifica di caratteri che utilizzerainel tuo sistema.

Date (inteso come data temporale): nel nostro caso,sceglieremo un formato europeo (ggmm-aaaa) invece delclassico formato americano (mm-gg-aaaa).

In questa fase, postgres è un utente del DBMS(il "root"), ma NON del sistema operativo(anche se può essere certamente aggiunto in seguito).Pertanto, l'unico modo per accedere al nostro DBMSè diventare utente postgres e lanciare ilcomando psql (per uscire, serve q):

root@localhost:~# su - postgres

postgres@localhost:~$ psql template1

template1=# q

postgres@localhost:~$

template1 è un database che viene creato infase di installazione. L'utilità ditemplate1 è presto detta: per gestirePostgreSQL servono molte informazioni riguardanti utenti,basi di dati, ed altro; quale miglior cosa che salvare questeinformazioni in un database interno? Il databasetemplate1 serve appunto a questo.

Importante: "database" è unacollezione di dati, "DBMS" è unsistema per gestire tali dati, come appunto PostgreSQL; moltospesso il termine "database" viene invece intesoerroneamente come DBMS.

Per poter gestire le politiche di accesso di postgres o dialtri utenti, è bene aprire ed editare il file/etc/postgresql/pg_hba.conf(/etc/postgresql/7.4/main/pg_hba.conf in Ubuntu).

In fondo al file si trovano delle righe di configurazione,che possono avere uno di questi sette formati:

local database user authentication-method[authentication-option]

host database user IP-address IP-maskauthentication-method [authentication-option]

hostssl database user IP-address IP-maskauthentication-method [authentication-option]

hostnossl database user IP-address IP-maskauthentication-method [authentication-option]

host database user IP-address/IP-masklenauthentication-method [authentication-option]

hostssl database user IP-address/IP-masklenauthentication-method [authentication-option]

hostnossl database user IP-address/IP-masklenauthentication-method [authentication-option]

Ecco una serie di esempi di configurazione del filepg_hba.conf, che dovrebbero essere sufficienti perchiarirne l'utilizzo:

# Permettmo ad ogni utente del sistema locale di connettersia qualsiasi database, usando
# qualsiasi nome utente, tramite Unix-domain sockets (ildefault per le connessioni locali)
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all all trust
# Stessa cosa di sopra, usando però connessioniloopback TCP/IP.
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 127.0.0.1 255.255.255.255 trust
# Stessa cosa di sopra, usando una maschera CIDR
# TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD
host all all 127.0.0.1/32 trust
# Permetto ad ogni utente da qualsiasi host con IP192.168.93.x di connettersi al database
# "template1" con lo stesso nome utente che vieneriportato per quella connessione
# (tipicamente il nome utente Unix, o nome utente disistema)
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host template1 all 192.168.93.0 255.255.255.0 identsameuser
# Stessa cosa di sopra, usando una maschera CIDR
# TYPE DATABASE USER IP-ADDRESS/CIDR-mask METHOD
host template1 all 192.168.93.0/24 ident sameuser
# Permetto ad un utente da 192.168.12.10 di connettersi aldatabase
# "template1" se viene fornita correttamente lapassword.
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host template1 all 192.168.12.10 255.255.255.255 md5
# In assenza di linee precedenti con inizio "host", verranno rifiutate connessioni da
# 192.168.54.1 (dato che questo valore viene confrontato perprimo), ma permesse connessioni
# di tipo "Kerberos V" da qualsiasi altro host suinternet. La IP-MASK a zero indica che nessun
# bit dell'indirizzo IP dell'host viene considerato,e che quindi uguaglia qualsiasi host.
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 192.168.54.1 255.255.255.255 reject
host all all 0.0.0.0 0.0.0.0 krb5
# Permetto agli utenti da 192.168.x.x di connettersi aqualsiasi database, se superano
# il controllo di identità. Se, ad esempio, identcomunica che l'utente è giovanni e che
# la richiesta di connessione a PostgreSQL è comeutente "ospite" , la connessione passa
# se in pg_ident.conf è presente una riga conmappatura "omicron" in cui a"giovanni"
# è permesso connettersi come utente"ospite".
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
host all all 192.168.0.0 255.255.0.0 ident omicron
# se queste sono le uniche linee per connessioni locali,permettono agli utenti locali di
# connettersi solo verso i loro propri database (con lostesso nome del loro nome utente),
# fatta eccezione per amministratori e membri del gruppo"support" che invece possono
# connettersi a qualsiasi database. Il file $PG_DATA/adminscontiene una lista di questi utenti.
# Le password sono richieste in qualsiasi caso.
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local sameuser all md5
local all @admins md5
local all +support md5
# Le due linee sopra possono essere combinate in una unicalinea:
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local all @admins,+support md5
# La colonna "database" può anche usareliste e nomi di file, ma non gruppi:
# TYPE DATABASE USER IP-ADDRESS IP-MASK METHOD
local db1,db2,@demodbs all md5

Per qualsiasi ulteriore informazione sull'utilizzo delfile pg_hba.conf, vi rimando qui:

www.postgresql.org/docs/7.4/interactive/client-authentication.html#AUTH-PG-HBA-CONF

Una volta apportate modifiche al file pg_hba.conf,è necessario riavviare il daemon di PostgreSQL,chiamato postmaster (usa pstree per visualizzarlo) conquesto comando:

root@localhost:~# /etc/init.d/postgresql restart

Continua >>>