Site icon Tosolini.info

Linux: installare e configurare PostgreSQL

Vediamo come installare un database relazionale come PostgreSQL alla fine non sia complicatissimo. PostgreSQL è negli ultimi anni diventato un punto di riferimento come database per progetti open source. MySQL e più di recente il fork MariaDB non offrono lo stesso livello prestazionale e stabilità complessiva.

Partiamo dall’assunto che abbiamo una distribuzione linux Ubuntu o comunque Debian Oriented.

Per prima cosa dobbiamo appunto installare PostgreSQL che nel nostro caso si risolve in due righe a linea di comando:

sudo apt update
sudo apt install postgresql postgresql-contrib

postgresql e postgresql-contrib sono due meta-pacchetti, cioè in base alla versione del sistema operativo installato, andranno ad installare la versione di PostgreSQL di riferimento. Per intendersi Ubuntu 20.04 ha come riferimento la versione 12.

E’ comunque possibile, aggiungendo apt proprietari proprio di PostgreSQL, installare l’ultima o versioni più vecchie sulle versioni LTS (long term support) di Ubuntu, seguendo le istruzioni di questa pagina.

Ora abbiamo installato PostgreSQL nel sistema, ma resta l’incombenza di doverlo configurare per i nostri scopi.

Per accedere alla command line del database per prima cosa dobbiamo cambiare utente:

sudo -i -u postgres

Una volta cambiato utente possiamo accedere alla command line, che non è integrata nella bash, ma è di fatto una sua linea di comando dedicata. Il comando per accedervi è:

psql

Possiamo anche ridurre questi due passaggi in un comando solo, ovvero:

sudo -u postgres psql

Perfetto, il primo comando che dobbiamo imparare è come uscire, poiché se facciamo CTRL+C non otteniamo nulla. Il comando è:

\q

Creare un ruolo

In PSQL la prima cosa da fare è crearsi un proprio ruolo. Nel mondo di PostgreSQL il ruolo di fatto permette di aggregare una utenza ad un database con determinati diritti. Non esiste quindi un concetto di utenti e gruppi tipico di Linux.

In realtà le strade per fare questa operazioni sono molteplici, la più semplice è invocare il seguente comando che attiva un wizard testuale e corrisponde alla creazione di un utente:

sudo -u postgres createuser --interactive

A video vi verrà chiesto l’utente e se questo debba essere un super-user:

il passo successivo è quello di creare un database. Quello che consiglio è di avere una sorta di continuità logica, ovvero il nome utente deve essere uguale al nome del database, in seguito sarà più chiaro il perché.

sudo -u postgres createdb tosolini

a questo punto se l’utente che stiamo creando è anche un utente del sistema operativo possiamo lanciare la shell di psql senza dover cambiare utente. Viceversa è consigliato creare l’utente con:

sudo adduser nomeUtente

Come citato sopra, con il nome utente uguale al nome del ruolo (ovvero dell’utente creato per quel ruolo) potremo lanciare la shell psql in modo diretto:

psql

per verificare se siamo correttamente connessi, daremo il comando \conninfo:

\conninfo
You are connected to database "tosolini" as user "tosolini" via socket in "/var/run/postgresql" at port "5432".

A questo punto abbiamo totale disponibilità del database, ed ad esempio possiamo creare la nostra prima tabella:

CREATE TABLE prova ( id serial PRIMARY KEY);

Non dimenticate il ; finale!. Per avere conferma di quanto fatto possiamo passare il comando \d

tosolini=# \d
              List of relations
 Schema |     Name     |   Type   |  Owner   
--------+--------------+----------+----------
 public | prova        | table    | tosolini
 public | prova_id_seq | sequence | tosolini
(2 rows)

O se preferite la più canonica delle SELECT:

tosolini=# SELECT * from prova;
 id 
----
(0 rows)

Conclusioni

Non mi dilungo poi nei comandi, che sono sostanzialmente quelli relativi al mondo SQL e al limite sarebbero oggetto di un post a parte. Piuttosto era importante comprendere quanto sia discretamente semplice installare e configurare, anche e sopratutto da linea di comando, un Database.

Attenzione che la guida sopra descritta non prevede l’utilizzo per accessi esterni, infatti correttamente la configurazione base di PostgreSQL si posiziona in ascolto e come accesso solo al localhost

tosolini@server2004:~$ ss -tln | grep 5432
LISTEN   0        244            127.0.0.1:5432          0.0.0.0:* 

Quindi se necessitate di collegarvi direttamente al database dall’esterno (ad esempio utilizzando l’ottimo Dbeaver) sarà necessario mettere mano alla configurazione base del PostgreSQL, o al limite utilizzare un tunnel SSH.

Exit mobile version