Introduzione
I sistemi di gestione di database relazionali sono un componente chiave di molti siti web e applicazioni. Forniscono un modo strutturato per memorizzare, organizzare e accedere alle informazioni.
PostgreSQL, o Postgres, è un sistema di gestione di database relazionali che fornisce un’implementazione del linguaggio di interrogazione SQL. È conforme agli standard e ha molte funzionalità avanzate come transazioni affidabili e concorrenza senza blocchi di lettura.
Questa guida mostra come installare Postgres su un server Ubuntu 22.04. Fornisce anche alcune istruzioni per l’amministrazione generale del database.
Prerequisiti
Per seguire questo tutorial, avrai bisogno di un server Ubuntu 22.04 che sia stato configurato seguendo la nostra guida Configurazione Iniziale del Server per Ubuntu 22.04. Dopo aver completato questo tutorial preliminare, il tuo server dovrebbe avere un utente non root con permessi sudo e un firewall di base.
Passaggio 1 — Installazione di PostgreSQL
I repository predefiniti di Ubuntu contengono i pacchetti di Postgres, quindi puoi installarli usando il sistema di gestione dei pacchetti apt
.
Se non l’hai fatto di recente, aggiorna l’indice locale dei pacchetti del server:
Successivamente, installa il pacchetto di Postgres insieme a un pacchetto -contrib
che aggiunge alcune utilità e funzionalità extra:
Assicurati che il server sia in esecuzione utilizzando il comando systemctl start
:
Ora che il software è installato e in esecuzione, possiamo passare a vedere come funziona e in che modo potrebbe differire dagli altri sistemi di gestione di database relazionali che potresti aver usato.
Passaggio 2 — Utilizzo di Ruoli e Database PostgreSQL
Per impostazione predefinita, Postgres utilizza un concetto chiamato ruoli per gestire l’autenticazione e l’autorizzazione. Questi sono, in alcuni modi, simili agli account regolari di stile Unix, ma Postgres non distingue tra utenti e gruppi e preferisce invece il termine più flessibile “ruolo”.
All’installazione, Postgres è configurato per utilizzare l’autenticazione peer, il che significa che associa i ruoli di Postgres con un account di sistema Unix/Linux corrispondente. Se esiste un ruolo all’interno di Postgres, un nome utente Unix/Linux con lo stesso nome può accedere come tale ruolo.
La procedura di installazione ha creato un account utente chiamato postgres che è associato al ruolo predefinito di Postgres. Per utilizzare Postgres, è possibile accedere a quell’account.
Ci sono alcuni modi per utilizzare questo account per accedere a Postgres.
Passaggio all’account postgres
Passare all’account postgres sul tuo server digitando:
Ora è possibile accedere immediatamente al prompt di PostgreSQL digitando:
Da lì sei libero di interagire con il sistema di gestione del database secondo necessità.
Uscire dal prompt di PostgreSQL digitando:
Questo ti riporterà al prompt dei comandi dell’utente Linux postgres.
Accesso a un prompt di Postgres senza cambiare account
È possibile eseguire anche il comando desiderato con l’account postgres direttamente con sudo
.
Ad esempio, nell’ultimo esempio, ti è stato chiesto di accedere al prompt di Postgres passando prima all’utente postgres e quindi eseguendo psql
per aprire il prompt di Postgres. È possibile fare ciò in un solo passaggio eseguendo il singolo comando psql
come utente postgres con sudo
, così:
Questo ti farà accedere direttamente a Postgres senza lo shell bash
intermedio.
Di nuovo, puoi uscire dalla sessione interattiva di Postgres digitando:
Molti casi d’uso richiedono più di un ruolo Postgres. Continua a leggere per imparare come configurarli.
Passaggio 3 — Creare un Nuovo Ruolo
Attualmente, hai il ruolo postgres configurato nel database. Puoi creare nuovi ruoli dalla riga di comando con il comando createuser
. Il flag --interactive
ti chiederà il nome del nuovo ruolo e anche se deve avere i permessi di superutente.
Se sei loggato come l’account postgres, puoi creare un nuovo utente digitando:
Se, invece, preferisci utilizzare sudo
per ogni comando senza passare al tuo account normale, digita:
Lo script ti proporrà alcune scelte e, in base alle tue risposte, eseguirà i comandi corretti di Postgres per creare un utente secondo le tue specifiche.
OutputEnter name of role to add: sammy
Shall the new role be a superuser? (y/n) y
Puoi ottenere maggior controllo passando alcuni flag aggiuntivi. Dai un’occhiata alle opzioni consultando la pagina man
per il comando createuser
:
La tua installazione di Postgres ha ora un nuovo utente, ma non hai ancora aggiunto alcun database. La sezione successiva descrive questo processo.
Passaggio 4 — Creazione di un Nuovo Database
Un’altra assunzione che il sistema di autenticazione di Postgres fa per impostazione predefinita è che per qualsiasi ruolo utilizzato per accedere, quel ruolo avrà un database con lo stesso nome a cui può accedere.
Questo significa che se l’utente creato nella sezione precedente si chiama sammy, quel ruolo cercherà di connettersi a un database chiamato anche “sammy” per impostazione predefinita. Puoi creare il database appropriato con il comando createdb
.
Se hai eseguito l’accesso con l’account postgres, dovresti digitare qualcosa del genere:
Se, invece, preferisci utilizzare sudo
per ogni comando senza passare al tuo account normale, dovresti digitare:
Questa flessibilità offre più percorsi per creare i database secondo necessità.
Passaggio 5 — Apertura di un prompt di Postgres con il nuovo ruolo
Per accedere con l’autenticazione peer, avrai bisogno di un utente Linux con lo stesso nome del tuo ruolo e del database Postgres.
Se non hai a disposizione un utente Linux corrispondente, puoi crearne uno con il comando adduser
. Dovrai eseguire questa operazione dal tuo account non root con privilegi sudo
(ovvero, non effettuando l’accesso come utente postgres):
Una volta disponibile questo nuovo account, puoi passare e connetterti al database digitando:
Oppure, puoi farlo direttamente in linea:
Questo comando ti effettuerà automaticamente l’accesso, assumendo che tutti i componenti siano stati configurati correttamente.
Se vuoi che il tuo utente si connetta a un database diverso, puoi farlo specificando il database in questo modo:
Una volta effettuato l’accesso, puoi verificare le tue informazioni di connessione attuali digitando:
OutputYou are connected to database "sammy" as user "sammy" via socket in "/var/run/postgresql" at port "5432".
Questo è utile se ti stai connettendo a database non predefiniti o con utenti non predefiniti.
Passaggio 6 — Creazione ed Eliminazione di Tabelle
Ora che sai come connetterti al sistema di database PostgreSQL, puoi imparare alcune operazioni di gestione di base di Postgres.
La sintassi di base per la creazione di tabelle è la seguente:
CREATE TABLE table_name (
column_name1 col_type (field_length) column_constraints,
column_name2 col_type (field_length),
column_name3 col_type (field_length)
);
Questo comando assegna un nome alla tabella e poi definisce le colonne così come il tipo di colonna e la lunghezza massima dei dati del campo. Opzionalmente, puoi aggiungere vincoli per ogni colonna.
Puoi saperne di più sulla creazione di tabelle seguendo la nostra guida su Come Creare e Gestire Tabelle in SQL.
A scopo dimostrativo, crea la seguente tabella:
Questo comando creerà una tabella che tiene traccia dell’equipaggiamento del parco giochi. La prima colonna nella tabella conterrà i numeri di ID dell’equipaggiamento del tipo serial
, che è un intero auto-incrementante. Questa colonna ha anche il vincolo di PRIMARY KEY
, il che significa che i valori al suo interno devono essere univoci e non nulli.
Le due righe successive creano colonne rispettivamente per il tipo
e il colore
dell’equipaggiamento, nessuno dei quali può essere nullo. La riga successiva crea una colonna posizione
con un vincolo che richiede che il valore sia uno dei otto possibili valori. L’ultima riga crea una colonna data
che registra la data in cui è stato installato l’equipaggiamento.
Per due delle colonne (equip_id
e install_date
), il comando non specifica una lunghezza del campo. Il motivo è che alcuni tipi di dati non richiedono una lunghezza impostata perché la lunghezza o il formato sono impliciti.
Esamina la tua nuova tabella digitando:
Output List of relations
Schema | Name | Type | Owner
--------+-------------------------+----------+-------
public | playground | table | sammy
public | playground_equip_id_seq | sequence | sammy
(2 rows)
Il tuo tavolo da gioco è qui, ma c’è anche qualcosa chiamato playground_equip_id_seq
che è del tipo sequence
. Questa è una rappresentazione del tipo serial
che hai dato alla tua colonna equip_id
. Questo tiene traccia del prossimo numero nella sequenza e viene creato automaticamente per colonne di questo tipo.
Se vuoi visualizzare solo il tavolo senza la sequenza, puoi digitare:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Con un tavolo pronto, usiamolo per praticare la gestione dei dati.
Passaggio 7 — Aggiunta, Query e Cancellazione dei Dati in una Tabella
Ora che hai un tavolo, puoi inserire alcuni dati al suo interno. Come esempio, aggiungi uno scivolo e un’altalena chiamando il tavolo a cui desideri aggiungere, nominando le colonne e quindi fornendo i dati per ogni colonna, in questo modo:
Dovresti fare attenzione quando inserisci i dati per evitare alcuni problemi comuni. Per prima cosa, non avvolgere i nomi delle colonne tra virgolette, ma i valori delle colonne che inserisci necessitano delle virgolette.
Un’altra cosa da tenere presente è che non inserisci un valore per la colonna equip_id
. Questo perché viene generato automaticamente ogni volta che aggiungi una nuova riga alla tabella.
Recupera le informazioni che hai aggiunto digitando:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
1 | slide | blue | south | 2017-04-28
2 | swing | yellow | northwest | 2018-08-16
(2 rows)
Nota che il tuo equip_id
è stato compilato correttamente e che tutti gli altri dati sono stati organizzati correttamente.
Se lo scivolo sul playground si rompe e devi rimuoverlo, puoi anche eliminare la riga dalla tua tabella digitando:
Interroga nuovamente la tabella:
Output equip_id | type | color | location | install_date
----------+-------+--------+-----------+--------------
2 | swing | yellow | northwest | 2018-08-16
(1 row)
Nota che la riga slide
non fa più parte della tabella.
Passaggio 8 — Aggiunta e Rimozione di Colonne da una Tabella
Dopo aver creato una tabella, puoi modificarla aggiungendo o rimuovendo colonne. Aggiungi una colonna per mostrare l’ultima visita di manutenzione per ogni pezzo di attrezzatura digitando:
Rivedi le informazioni della tua tabella. È stata aggiunta una nuova colonna ma non sono stati inseriti dati:
Output equip_id | type | color | location | install_date | last_maint
----------+-------+--------+-----------+--------------+------------
2 | swing | yellow | northwest | 2018-08-16 |
(1 row)
Se scopri che il tuo team di lavoro utilizza un tool separato per tenere traccia della cronologia della manutenzione, puoi eliminare la colonna digitando:
Questo elimina la colonna last_maint
e tutti i valori al suo interno, ma lascia intatti tutti gli altri dati.
Passaggio 9 — Aggiornamento dei Dati in una Tabella
Fino ad ora, hai imparato come aggiungere record a una tabella e come eliminarli, ma questo tutorial non ha ancora trattato come modificare le voci esistenti.
È possibile aggiornare i valori di una voce esistente interrogando il record desiderato e impostando la colonna sul valore che si desidera utilizzare. È possibile interrogare il record swing
(questo corrisponderà a ogni altalena nella tua tabella) e cambiare il suo colore in rosso
. Questo potrebbe essere utile se hai dato una verniciata all’altalena:
È possibile verificare che l’operazione sia stata eseguita con successo interrogando nuovamente i dati:
Output equip_id | type | color | location | install_date
----------+-------+-------+-----------+--------------
2 | swing | red | northwest | 2018-08-16
(1 row)
Ora lo scivolo risulta essere registrato come rosso.
Conclusione
Ora sei pronto con PostgreSQL sul tuo server Ubuntu 22.04. Se desideri saperne di più su Postgres e su come utilizzarlo, ti invitiamo a consultare le seguenti guide:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-22-04