Project

General

Profile

PostgresInitConf » History » Revision 8

Revision 7 (Amministratore Truelite, 03/18/2008 03:05 PM) → Revision 8/13 (Amministratore Truelite, 03/18/2008 03:13 PM)

[[TracNav(TOC)]] 
 = Configurazione di base di PostgresSQL = 

 Si sono riassunte qui le istruzioni per effettuare alcune configurazioni di 
 base sul database PostgresSQL. Si tenga presente che installando il pacchetto 
 {{{postgres}}} su Debian Etch verrà installata la versione 7.4, se si vuole 
 utilizzare la versione più recente si dovrà installare esplicitamente il 
 pacchetto {{{postgres-8.1}}}. 

 Si tenga presente che è sempre possibile installare due versioni diverse del 
 database in contemporanea, ed il sistema di configurazione di Debian si 
 prenderà carico di farli funzionare insieme, assegnandogli porte diverse: il 
 primo ad essere installato userà la porta standard 5432, il secondo la 
 successiva 5433, ecc.   

 Ovviamente se si rimuove la prima versione installata la seconda resterà in 
 ascolto sulla porta non standard, (se ne tenga conto qualora ci siano altri 
 programmi che usano il database installati dai pacchetti Debian, dato che 
 questi si collegano di default sulla porta 5432). 
 
 L'installazione di default del pacchetto di Debian consente l'accesso soltanto 
 da {{{localhost}}} e soltanto tramite l'utente locale {{{postgres}}}. Qualora 
 serva poter accedere al database via rete occorre modificare la configurazione 
 del server. Questa si trova, a seconda dell versione installata, nella 
 directory {{{/etc/postgres/7.4/main/}}} o {{{/etc/postgres/8.1/main/}}}.  

 Per abilitare l'accesso via rete occorre anzitutto porre in ascolto il server 
 su un indirizzo IP raggiungibile, rispetto al default che è porsi in ascolto 
 solo sul {{{localhost}}}, per farlo occorre modificare il file 
 {{{postgressql.conf}}} inserendo una riga del tipo: 

 {{{ 
 listen_addresses='*' 
 }}} 

 che abilita l'ascolto su tutti gli indirizzi locali, alternativamente si può 
 indicare un indirizzo specifico, nello stesso file si può anche indicare una 
 porta diversa da quella di default con la direttiva {{{port}}}. 

 Il passo successivo è modificare le regole di accesso su {{{pg_hba.conf}}}, il 
 default infatti è accettare le connessioni solo per un utente locale del 
 sistema o per accessi da {{{localhost}}}, per abilitarle da una sottorete 
 generica si dovrà introdurre una riga del tipo: 

 {{{ 
 host      all           all           192.168.1.0/24                 md5 
 }}} 

 che consente l'accesso agli utenti presenti sul database, identificati tramite 
 un hash MD5 (il default usato dalla gestione utenti del database). Effettuati 
 i cambiamenti si dovrà riavviare il servizio per renderli effettivi. 

 Per i compiti amministrativi l'installazione di default utilizza l'utente 
 locale {{{postgres}}} che consente l'accesso diretto al database con pieni 
 diritti amministrativi, per questo il primo passo da fare è sempre quello di 
 collegarsi con tale utente (in genere lo si fa con un {{{su postgres}}} dato 
 da {{{root}}}). 

 La linea di comando per l'accesso al database è fornita dal comando {{{psql}}} 
 che prende come primo argomento (opzionale) il nome di un database e come 
 secondo argomento (sempre opzionale) il nome di un utente, se ci si vuole 
 collegare via rete occorre usare l'opzione {{{-h}}} per indicare l'hostname (o 
 l'indirizzo IP). I comandi di base sono i seguenti: 

 ||{{{\l}}}|| mostra l'elenco dei database|| 
 ||{{{\c nome}}}|| si collega al database {{{nome}}}|| 
 ||{{{\d}}}|| mostra l'elenco delle tabelle del database (prima ci si deve collegare allo stesso)|| 
 ||{{{\du}}}|| mostra l'elenco degli utenti (si deve essere collegati)|| 

 Per verificare la lista degli utenti definiti ci si dovrà collegare al 
 database di sistema {{{postgres}}}, per questo si potrà usare direttamente il 
 comando {{{psql postgres}}}, a questo punto con il comando {{{\du}}} si avrà 
 la lista degli utenti. 

 Per creare un nuovo utente si può utilizzare il comando {{{createuser}}} che 
 di default crea un utente senza privilegi (a meno di non usare l'opzione 
 {{{-d}}} per consentire la creazione di altri database o l'opzione {{{-a}}} 
 per consentire la creazione di altri utenti). Il comando deve essere dato da 
 un utente con privilegi amministrativi (nel caso l'utente {{{postgres}}}), si 
 potrà allora aggiungere l'utente {{{myuser}}} con: 

 {{{ 
 su postgres 
 createuser createusere myuser -P 
 }}} 

 e se si usa l'opzione {{{-P}}} per far sì che venga verrà anche chiesta una password, necessaria 
 necessaria nel caso ci si voglia collegare da remoto con la configurazione 
 mostrata in 
 precedenza.  

 Il comando esegue una richiesta interattiva dei vari parametri per cui nel 
 nostro caso avremo che qualcosa del tipo: 
 {{{ 
 postgres@davis:~$ createuser myuser -P 
 Enter password for new user:  
 Enter it again:  
 Shall the new user be allowed to create databases? (y/n) n 
 Shall the new user be allowed to create more new users? (y/n) n 
 CREATE USER 
 }}} 

 Se si vuole cambiare password ad un utente è sufficiente collegarsi con un 
 utente dotato di privilegi amministrativi al database {{{postgres}}} ed 
 eseguire il seguente comando: 

 {{{ 
 ALTER USER nomeutente WITH PASSWORD 'nuovapassword'; 
 }}} 

 La cancellazione di un utente si fà invece con il comando {{{dropuser}}}, che 
 però oltre a rimuovere l'utente richiede rimuove anche che non ci siano tutti i database che gli 
 gli appartengono; occorre pertanto il comando fallirà se prima fare attenzione a non si rimuovono anche 
 i database che l'utente possiede. 

 perdere dati.  

 Per creare un database si può incece usare il comando {{{createdb}}} che 
 prende come argomento il nome del database da creare, ovviamente il comando 
 deve essere dato da un utente con privilegi amministrativi o comunque con il 
 diritto di creare dei database. Quando si crea un database questo di default 
 apparterrà all'utente che lo crea, a meno di non usare l'opzione {{{-O}}} per 
 assegnargli un proprietario.  

 Nel nostro caso avendo creato un utente che non ha privilegi di creazione 
 dovremo creare il database dall'utente di amministrazione ed assegnarlo al 
 nostro utente, per cui dovremo fare: 
 {{{ 
 createdb mydb -O myuser 
 }}}