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 bloccare la lettura.
Questa guida dimostra come installare Postgres su un server Ubuntu 20.04. Fornisce anche alcune istruzioni per l’amministrazione generale del database.
Deploy di un database PostgreSQL con un clic utilizzando Database Gestiti DigitalOcean. Lascia che DigitalOcean si concentri su scalabilità, manutenzione e aggiornamenti per il tuo database.
Prerequisiti
Per seguire questo tutorial, avrai bisogno di un server Ubuntu 20.04 che sia stato configurato seguendo la nostra guida Configurazione Iniziale del Server per Ubuntu 20.04. Dopo aver completato questo prerequisito, 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 pacchetti di Postgres, quindi puoi installarli usando il sistema di gestione dei pacchetti apt
.
Se non lo hai fatto di recente, aggiorna l’indice locale dei pacchetti del server:
Successivamente, installa il pacchetto Postgres insieme a un pacchetto -contrib
che aggiunge alcune utilità e funzionalità aggiuntive:
Assicurati che il server sia in esecuzione utilizzando il comando systemctl start
:
Ora che il software è installato e in esecuzione, possiamo vedere come funziona e in che modo può essere diverso da altri sistemi di gestione di database relazionali che potresti aver usato in precedenza.
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 casi, simili agli account regolari di stile Unix, ma Postgres non fa distinzione 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 a un account di sistema Unix/Linux corrispondente. Se un ruolo esiste 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, puoi accedere a quell’account.
Ci sono alcuni modi per utilizzare questo account per accedere a Postgres.
Passare all’account postgres
Passare all’account postgres sul tuo server digitando:
Ora puoi accedere immediatamente al prompt di PostgreSQL digitando:
Da lì sei libero di interagire con il sistema di gestione del database secondo necessità.
Esci dal prompt di PostgreSQL digitando:
Questo ti riporterà al prompt del comando Linux postgres
.
Accesso a un Prompt Postgres Senza Cambiare Account
Puoi anche eseguire il comando desiderato direttamente con l’account postgres utilizzando sudo
.
Per esempio, nell’ultimo esempio, ti è stato indicato di accedere al prompt Postgres passando prima all’utente postgres e poi eseguendo psql
per aprire il prompt Postgres. Potresti fare questo in un solo passaggio eseguendo il singolo comando psql
come utente postgres con sudo
, così:
Questo ti registrerà direttamente in 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.
Passo 3 — Creazione di un Nuovo Ruolo
Attualmente, hai solo il ruolo postgres configurato nel database. Puoi creare nuovi ruoli dalla riga di comando con il comando createrole
. Il flag --interactive
ti chiederà il nome del nuovo ruolo e se dovrebbe avere i permessi di superutente.
Se hai effettuato l’accesso come 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 chiederà alcune scelte e, in base alle tue risposte, eseguirà i comandi Postgres corretti 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
:
La tua installazione di Postgres ora ha un nuovo utente, ma non hai ancora aggiunto alcun database. La prossima sezione descrive questo processo.
Passaggio 4 — Creazione di un Nuovo Database
Un’altra presupposizione che il sistema di autenticazione di Postgres fa per impostazione predefinita è che per qualsiasi ruolo utilizzato per accedere, tale ruolo avrà un database con lo stesso nome a cui può accedere.
Questo significa che se l’utente che hai creato nell’ultima sezione si chiama sammy, quel ruolo cercherà di connettersi a un database chiamato “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 la creazione dei database secondo necessità.
Passaggio 5 — Apertura di un Prompt Postgres con il Nuovo Ruolo
Per accedere con l’autenticazione peer, avrai bisogno di un utente Linux con lo stesso nome del tuo ruolo Postgres e del database.
Se non hai a disposizione un utente Linux corrispondente, puoi crearne uno con il comando adduser
. Dovrai farlo dal tuo account non root con i privilegi sudo
(cioè, non acceduto come l’utente postgres):
Una volta disponibile questo nuovo account, puoi passare e connetterti al database digitando:
Oppure, puoi farlo in linea:
Questo comando ti accederà automaticamente, 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 controllare le informazioni sulla connessione corrente 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 delle 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 delle 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)
);
Come puoi vedere, questi comandi danno un nome alla tabella e quindi definiscono le colonne così come il tipo di colonna e la lunghezza massima dei dati del campo. Puoi anche opzionalmente aggiungere vincoli di tabella per ogni colonna.
Puoi saperne di più su come creare e gestire tabelle in Postgres qui.
A scopo dimostrativo, crea la seguente tabella:
Questo comando creerà una tabella che tiene traccia dell’inventario dell’attrezzatura da gioco. La prima colonna nella tabella conterrà i numeri di ID dell’attrezzatura di tipo serial
, che è un intero incrementale automatico. Questa colonna ha anche il vincolo di PRIMARY KEY
che significa che i valori al suo interno devono essere univoci e non nulli.
Le due linee successive creano colonne per il tipo
e il colore
dell’attrezzatura rispettivamente, entrambi i quali non possono essere vuoti. La linea successiva crea una colonna posizione
e una 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 è stata installata l’attrezzatura.
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 definita perché la lunghezza o il formato è implicito.
Puoi vedere 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)
La tua tabella da gioco è qui, ma c’è anche qualcosa chiamato playground_equip_id_seq
che è del tipo sequenza
. Questo è una rappresentazione del tipo seriale
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 vedere solo la tabella senza la sequenza, puoi digitare:
Output List of relations
Schema | Name | Type | Owner
--------+------------+-------+-------
public | playground | table | sammy
(1 row)
Con una tabella pronta, usiamola per praticare la gestione dei dati.
Passaggio 7 — Aggiunta, Interrogazione e Cancellazione di Dati in una Tabella
Ora che hai una tabella, puoi inserire alcuni dati al suo interno. Come esempio, aggiungi uno scivolo e un’altalena chiamando la tabella a cui desideri aggiungere, nominando le colonne e quindi fornendo i dati per ciascuna colonna, come questo:
Dovresti fare attenzione nell’inserire 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 devono essere racchiusi tra 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)
Qui puoi vedere che il tuo equip_id
è stato compilato con successo e che tutti gli altri dati sono stati organizzati correttamente.
Se lo scivolo sul parco giochi si rompe e devi rimuoverlo, puoi anche rimuovere 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 dello scivolo
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 ciascun pezzo di attrezzatura digitando:
Se visualizzi nuovamente le informazioni della tua tabella, vedrai che la nuova colonna è stata aggiunta 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 altro strumento per tenere traccia della cronologia della manutenzione, puoi eliminare la colonna digitando:
Questa operazione elimina la colonna last_maint
e tutti i valori trovati 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 spiegato come modificare voci esistenti.
Puoi aggiornare i valori di una voce esistente interrogando il record che desideri e impostando la colonna sul valore che desideri utilizzare. Puoi cercare 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:
Puoi 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)
Come puoi vedere, lo scivolo è ora registrato come rosso.
Conclusione
Sei ora configurato con PostgreSQL sul tuo server Ubuntu 20.04. Se desideri saperne di più su Postgres e come utilizzarlo, ti incoraggiamo a consultare le seguenti guide:
Source:
https://www.digitalocean.com/community/tutorials/how-to-install-and-use-postgresql-on-ubuntu-20-04