PostgreSQL 16 segna un aggiornamento significativo nel mondo dei sistemi di gestione dei database. Rilasciato ufficialmente il 14 settembre 2023, PostgreSQL 16 introduce molte nuove funzionalità e miglioramenti, rafforzando la sua posizione di soluzione di database solida e versatile per utenti, amministratori e sviluppatori.
Di seguito sono riportate alcune delle caratteristiche principali di PostgreSQL 16:
- Miglioramenti della parallelizzazione: PostgreSQL 16 consente la parallelizzazione di hash join FULL e interni right OUTER, migliorando significativamente le prestazioni delle query.
- Miglioramenti della replica: Introduce la funzionalità di replica logica da server in standby e consente agli abbonati di applicare transazioni di grandi dimensioni in parallelo.
- Capacità di monitoraggio: L'aggiunta della vista pg_stat_io consente un monitoraggio più approfondito delle statistiche I/O.
- Supporto SQL/JSON: questa versione introduce costruttori SQL/JSON e funzioni di identità, ampliando le sue capacità di gestione dei dati.
- Prestazioni di congelamento sotto vuoto: PostgreSQL 16 migliora le prestazioni del congelamento sottovuoto, favorendo una manutenzione efficiente del database.
- Corrispondenza delle espressioni regolari: La corrispondenza delle espressioni regolari per i nomi utente e database in pg_hba.conf e i nomi utente in pg_ident.conf migliora la sicurezza e la flessibilità.
Ora passiamo alla procedura tecnica e approfondiamo il processo di installazione di PostgreSQL 16.
Prerequisiti per l'installazione di PostgreSQL 16
Per installare correttamente PostgreSQL 16 su Ubuntu, assicurati di soddisfare i seguenti requisiti:
Hardware consigliato e versioni Ubuntu supportate
Componente | Requisiti |
---|---|
Processore | Processore compatibile da 1 gigahertz (GHz) o più veloce |
RAM | 2 GB o più |
Spazio sul disco | 512 MB di HDD (spazio su disco aggiuntivo richiesto per dati o componenti di supporto) |
Versioni supportate | Ubuntu 24.04 (Nobile), Ubuntu 22.04 (Jammy), Ubuntu 20.04 (focale) |
Requisiti addizionali
Requisiti | Descrizione |
---|---|
Connessione internet | Necessario per scaricare PostgreSQL 16 e futuri aggiornamenti. |
Convenzioni terminali | Tutti i comandi del terminale devono essere eseguiti come utente normale con sudo privilegi. |
Comandi CLI | Utilizzare l'interfaccia della riga di comando (CLI) per l'installazione e la configurazione. |
Importa il repository APT PostgreSQL
Aggiorna Ubuntu prima dell'installazione di PostgreSQL 16
Inizia assicurandoti che il tuo sistema Ubuntu sia aggiornato. Questo passaggio è fondamentale per mantenere la stabilità e la compatibilità del sistema:
sudo apt update
Successivamente, aggiorna tutti i pacchetti non aggiornati:
sudo apt upgrade
Installa i pacchetti iniziali per PostgreSQL 16
Per facilitare l'installazione del software del database, installare i seguenti pacchetti:
sudo apt install dirmngr ca-certificates software-properties-common apt-transport-https lsb-release curl -y
Aggiungi il repository APT PostgreSQL 16
Innanzitutto, importa la chiave GPG PostgreSQL. Si tratta di garantire che i pacchetti che stai per installare siano autentici e non manomessi:
curl -fSsL https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql.gpg > /dev/null
Scegliere il giusto repository PostgreSQL 16
Ora è il momento di selezionare il repository PostgreSQL 16 appropriato per le tue esigenze.
Repository stabile per produzione/uso generale
Il repository stabile è il punto di riferimento per la maggior parte degli utenti, soprattutto in un ambiente di produzione. Viene regolarmente aggiornato con versioni stabili e sicure:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg main | sudo tee /etc/apt/sources.list.d/postgresql.list
Repository di istantanee o test per sviluppatori
Considera gli snapshot o i repository di test se sei nella fase di sviluppo o test. Ricorda solo, tuttavia, che questi non sono destinati all'uso produttivo a causa della loro natura meno stabile.
Repository di istantanee per test all'avanguardia
Prendi le ultime istantanee qui:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-snapshot main | sudo tee /etc/apt/sources.list.d/postgresql.list
Test del repository per le funzionalità più recenti
Per testare le funzionalità più recenti, questo comando ti configurerà:
echo deb [arch=amd64,arm64,ppc64el signed-by=/usr/share/keyrings/postgresql.gpg] http://apt.postgresql.org/pub/repos/apt/ $(lsb_release -cs)-pgdg-testing main | sudo tee /etc/apt/sources.list.d/postgresql.list
Installa PostgreSQL 16 tramite i comandi del terminale
Aggiorna l'elenco delle origini dell'indice dei pacchetti APT
Dopo aver aggiunto il repository PostgreSQL stabile o di prova, è importante aggiornare l'elenco delle fonti del repository. Questa azione garantisce che il tuo sistema riconosca il repository PostgreSQL appena aggiunto:
sudo apt update
Installa PostgreSQL 16 tramite il comando APT
Passiamo ora all'installazione di PostgreSQL 16. Questo comando installa sia il client che il server PostgreSQL:
sudo apt install postgresql-client-16 postgresql-16
Verifica dell'installazione di PostgreSQL
Una volta completata l'installazione, è fondamentale verificare che PostgreSQL sia installato e funzionante correttamente. Questo comando controlla lo stato del servizio PostgreSQL:
systemctl status postgresql
Attivazione di PostgreSQL 16
Se PostgreSQL non è attivo, utilizza questo comando per avviare il servizio PostgreSQL. Ciò garantisce inoltre che PostgreSQL si avvii automaticamente con il tuo sistema:
sudo systemctl enable postgresql --now
Gestione del servizio PostgreSQL 16
Arresto del server PostgreSQL 16
Per arrestare temporaneamente il servizio PostgreSQL, magari per manutenzione o modifiche alla configurazione, utilizza questo comando:
sudo systemctl stop postgresql
Avvio del server PostgreSQL 16
Quando sei pronto per avviare il servizio PostgreSQL, soprattutto dopo un arresto o un'installazione iniziale, questo comando torna utile:
sudo systemctl start postgresql
Riavvio del server PostgreSQL 16
Negli scenari in cui sono state modificate configurazioni o aggiornamenti, spesso è necessario un riavvio. Questo comando riavvia il servizio PostgreSQL, applicando eventuali nuove modifiche:
sudo systemctl restart postgresql
Ricaricamento del server PostgreSQL 16
Per ricaricare il servizio PostgreSQL senza interromperne il funzionamento, utilizzare questo comando. È utile quando è necessario applicare modifiche minori alla configurazione:
sudo systemctl reload postgresql
Controllo dello stato di PostgreSQL 16
Per verificare lo stato operativo del servizio PostgreSQL, incluso se è attivo e funziona senza problemi, utilizzare:
systemctl status postgresql
Abilitazione di PostgreSQL 16 all'avvio del sistema
Se PostgreSQL non è impostato per l'avvio automatico, questo comando lo abiliterà, assicurando che sia attivo immediatamente e ai successivi avvii del sistema:
sudo systemctl enable postgresql --now
Comandi di esempio di base con PostgreSQL 16
Accesso all'account utente Postgres
In PostgreSQL, l'utente 'postgres' è un ruolo di superutente predefinito. Questo account è fondamentale per l'esecuzione dei comandi amministrativi. Per passare a questo account, utilizza:
sudo -i -u postgres
Una volta nell'account, accedi all'interfaccia della riga di comando di PostgreSQL:
psql
Il suggerimento postgres=#
conferma la tua connessione all'ambiente PostgreSQL. Per uscire è sufficiente digitare exit
.
Accesso rapido a PostgreSQL senza cambio utente
Per operazioni rapide senza modificare l'account utente, accedi direttamente a PostgreSQL:
sudo -u postgres psql
Questo comando consente di risparmiare tempo nelle attività di routine. Per uscire da questa interfaccia, digitare exit
.
Creazione di un nuovo ruolo utente PostgreSQL
La flessibilità di PostgreSQL consente ai superutenti di creare ruoli utente. Per stabilire un nuovo ruolo utente, immetti questo comando:
sudo su - postgres -c "createuser <username>"
Sostituire <username>
con il nome utente desiderato.
Avvio di un nuovo database PostgreSQL
Per impostare un nuovo database per il tuo utente:
sudo su - postgres -c "createdb <database_name>"
Sostituire <database_name>
con il nome previsto per il database.
Assegnazione dei privilegi utente a un database
Assegna in modo sicuro l'accesso al database:
sudo -u postgres psql
GRANT ALL PRIVILEGES ON DATABASE <database_name> TO <username>;
Sostituire <database_name>
E <username>
come richiesto. Concludi digitando exit
.
Configura il firewall UFW per PostgreSQL 16
Installazione e attivazione del firewall UFW
Assicurati che UFW (Uncomplicated Firewall) sia installato e attivato sul tuo sistema. UFW semplifica la gestione del firewall ed è essenziale per proteggere il traffico di rete:
sudo apt install ufw
sudo ufw enable
Impostazione delle regole UFW per PostgreSQL 16
PostgreSQL comunica sulla porta 5432 per impostazione predefinita. È necessario configurare UFW per consentire il traffico su questa porta, soprattutto quando ci si connette da posizioni remote.
Consentire l'accesso alla sottorete
Per consentire l'accesso a un intervallo di indirizzi IP all'interno di una sottorete, utilizzare questo comando:
sudo ufw allow proto tcp from 192.168.1.0/24 to any port 5432
Sostituire 192.168.1.0/24
con l'intervallo di sottorete specifico.
Consentire l'accesso IP individuale
Per garantire l'accesso a PostgreSQL da un singolo indirizzo IP, utilizzare:
sudo ufw allow proto tcp from 192.168.1.0 to any port 5432
Modificare 192.168.1.0
all'indirizzo IP che desideri consentire.
Questi sono solo esempi basilari. Dovresti considerare di bloccare il più possibile qualsiasi database rivolto al pubblico a lungo termine.
Configura PostgreSQL 16
Abilita l'accesso remoto in PostgreSQL 16
La configurazione di PostgreSQL per accettare connessioni remote comporta la regolazione dell'indirizzo di ascolto dall'interfaccia locale predefinita.
Modifica della configurazione per l'accesso remoto
Accedi al file di configurazione PostgreSQL:
sudo nano /etc/postgresql/16/main/postgresql.conf
Nella sezione "Impostazioni di connessione", modifica listen_addresses = 'localhost'
alle tue esigenze specifiche:
- Sostituisci "localhost" con l'indirizzo IP desiderato per un singolo IP.
- Per consentire le connessioni su tutte le interfacce, utilizzare
listen_addresses = '*'
.
Dopo aver apportato le modifiche, salva con CTRL+O ed esci con CTRL+X. Quindi riavvia PostgreSQL:
sudo systemctl restart postgresql
Verifica le modifiche con:
ss -nlt | grep 5432
Nell'output, dovresti vedere la porta 5432 attiva.
Configurazione di pg_hba.conf per la sicurezza avanzata
Modifica il pg_hba.conf
file per il controllo degli accessi ottimizzato:
sudo nano /etc/postgresql/16/main/pg_hba.conf
Personalizzazione dell'accesso utente e al database
In pg_hba.conf
, è possibile specificare quali utenti e database possono connettersi e da quali indirizzi. Ecco alcune configurazioni comuni:
- Accesso specifico dell'utente: sostituisci "tutti" con un nome utente specifico per limitare l'accesso solo a quell'utente.
- Accesso specifico al database: specificare un database particolare invece di consentire l'accesso a tutti i database.
- Restrizioni sugli indirizzi: definire indirizzi o intervalli IP specifici (ad es.
192.168.1.0/24
) per limitare la posizione in cui possono avere origine le connessioni.
Scelta dei metodi di autenticazione
PostgreSQL supporta vari metodi di autenticazione:
- MD5: Richiede una password e la crittografa con MD5.
- Parola d'ordine: utilizza password in testo semplice (meno sicure, non consigliate per la produzione).
- Pari: si basa sull'identità utente a livello di sistema operativo (comune per le connessioni locali).
- Ident: simile a "peer", generalmente utilizzato per le connessioni di rete.
- SCRAM-SHA-256: un metodo più sicuro, consigliato rispetto a MD5 o password.
Ottimizzazione delle prestazioni postgresql.conf
Per l'ottimizzazione delle prestazioni, considera queste impostazioni in postgresql.conf
:
- buffer_condivisi: regola la quantità di memoria utilizzata da PostgreSQL per i buffer di memoria condivisa.
- lavoro_mem: imposta la memoria utilizzata per le operazioni di ordinamento e hashing interne.
- max_connections: controlla il numero massimo di connessioni simultanee al database.
Monitoraggio e diagnostica
Abilita la registrazione dettagliata per ottenere informazioni dettagliate sulle prestazioni e sui problemi del database:
- log_istruzione: impostato su "all" per registrare ogni istruzione SQL eseguita.
- log_durata: se abilitato, registra la durata di ciascuna istruzione SQL completata.
Conclusione
Abbiamo appena esaminato una guida completa per configurare PostgreSQL 16 su Ubuntu, coprendo tutto, dall'installazione e configurazione dell'accesso remoto al rafforzamento della sicurezza con le regole del firewall. Ricorda, anche se è fantastico avere PostgreSQL installato e funzionante, la vera chiave sta nella manutenzione regolare e nei controlli di sicurezza.
link utili
Ecco alcuni collegamenti utili relativi all'installazione di PostgreSQL 16 su Ubuntu Linux:
- Note sulla versione di PostgreSQL 16: leggi le note sulla versione di PostgreSQL 16 per conoscere nuove funzionalità, miglioramenti e correzioni di bug.
- Repository GitHub PostgreSQL: Visita il repository ufficiale PostgreSQL GitHub per accedere al codice sorgente, segnalare problemi e contribuire allo sviluppo.
- Documentazione PostgreSQL: accedi alla documentazione completa di PostgreSQL per guide dettagliate su installazione, configurazione e utilizzo.
- Comunità PostgreSQL: Unisciti alla comunità PostgreSQL per connetterti con altri utenti, partecipare alle discussioni e ottenere supporto.