Project

General

Profile

PostgresInitConf » History » Version 12

Simone Piccardi, 10/05/2022 05:32 PM

1 10 Simone Piccardi
h1. Configurazione di base di PostgresSQL
2 1 Amministratore Truelite
3 12 Simone Piccardi
Si sono riassunte qui le istruzioni per effettuare alcune configurazioni di base sul database _PostgresSQL_.  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.
4 1 Amministratore Truelite
5 12 Simone Piccardi
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/$NVERS/main/@.
6 1 Amministratore Truelite
7 6 Amministratore Truelite
8 12 Simone Piccardi
h2. Accesso remoto
9
10 10 Simone Piccardi
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: 
11 1 Amministratore Truelite
12
<pre>
13 2 Amministratore Truelite
listen_addresses='*'
14 1 Amministratore Truelite
</pre>
15
16 10 Simone Piccardi
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@.
17 2 Amministratore Truelite
18 10 Simone Piccardi
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: 
19 1 Amministratore Truelite
20
<pre>
21
host    all         all         192.168.1.0/24               md5
22 2 Amministratore Truelite
</pre>
23 1 Amministratore Truelite
24
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.
25 9 Amministratore Truelite
26 12 Simone Piccardi
h2. Accesso amministrativo
27
28 10 Simone Piccardi
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@).
29 2 Amministratore Truelite
30 10 Simone Piccardi
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: 
31
32
|@\l@| mostra l'elenco dei database|
33 1 Amministratore Truelite
|@\c nome@| si collega al database @nome@|
34 11 Simone Piccardi
|@\d@| mostra l'elenco delle tabelle del database (prima ci si deve collegare allo stesso)|
35 1 Amministratore Truelite
|@\du@| mostra l'elenco degli utenti (si deve essere collegati)|
36
37 12 Simone Piccardi
h2. Gesione utenti
38 9 Amministratore Truelite
39 12 Simone Piccardi
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. Si tenga presente che in realtà con Postgres esistono solo dei ruoli, che riassumono in se sia il concetto di utente (è un ruolo con la capacità di fare login) che di gruppi. 
40
41 10 Simone Piccardi
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:
42 9 Amministratore Truelite
43 1 Amministratore Truelite
<pre>
44
su postgres
45 9 Amministratore Truelite
createuser myuser -P
46 8 Amministratore Truelite
</pre>
47
48 10 Simone Piccardi
e si usa l'opzione @-P@ per far sì che venga anche chiesta una password, necessaria nel caso ci si voglia collegare da remoto con la configurazione mostrata in precedenza. 
49 1 Amministratore Truelite
50 10 Simone Piccardi
Il comando esegue una richiesta interattiva dei vari parametri per cui nel nostro caso avremo che qualcosa del tipo:
51
52 2 Amministratore Truelite
<pre>
53 9 Amministratore Truelite
postgres@davis:~$ createuser myuser -P
54 7 Amministratore Truelite
Enter password for new user: 
55 9 Amministratore Truelite
Enter it again: 
56 8 Amministratore Truelite
Shall the new user be allowed to create databases? (y/n) n
57 9 Amministratore Truelite
Shall the new user be allowed to create more new users? (y/n) n
58 7 Amministratore Truelite
CREATE USER
59
</pre>
60
61 10 Simone Piccardi
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: 
62 9 Amministratore Truelite
63 1 Amministratore Truelite
<pre>
64
ALTER USER nomeutente WITH PASSWORD 'nuovapassword';
65
</pre>
66
67 12 Simone Piccardi
Per copiare i pernessi di un utente su un'altro si deve eseguire il seguente comando: 
68
69
<pre>
70
GRANT utenteoriginario TO nuovoutente;
71
</pre>
72
73 7 Amministratore Truelite
La cancellazione di un utente si fà invece con il comando @dropuser@, che però oltre a rimuovere l'utente richiede anche che non ci siano database che gli appartengono; pertanto il comando fallirà se prima non si rimuovono anche i database che l'utente possiede.
74 12 Simone Piccardi
75
h2. Gestione database
76 7 Amministratore Truelite
77 10 Simone Piccardi
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.
78 7 Amministratore Truelite
79 10 Simone Piccardi
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: 
80 9 Amministratore Truelite
<pre>
81 1 Amministratore Truelite
createdb mydb -O myuser
82 9 Amministratore Truelite
</pre>