Come installare MariaDB su Ubuntu (20.04 / 22.04 / 24.04) – Guida completa all’installazione e alla sicurezza

目次

Il modo più veloce per installare MariaDB su Ubuntu (supportati 20.04 / 22.04 / 24.04)

Se vuoi iniziare a usare MariaDB su Ubuntu immediatamente, segui semplicemente i passaggi qui sotto per completare l’installazione e la verifica dell’avvio. A meno che tu non abbia una ragione specifica, installare dal repository predefinito di Ubuntu è l’opzione più sicura e stabile.

① Aggiorna le informazioni sui pacchetti

sudo apt update
sudo apt upgrade -y

② Installa MariaDB

sudo apt install -y mariadb-server mariadb-client

Nessuna configurazione speciale è necessaria durante l’installazione. Al termine, il servizio MariaDB si avvierà automaticamente.

③ Verifica che MariaDB sia in esecuzione

sudo systemctl status mariadb

Se viene visualizzato active (running), MariaDB è in esecuzione correttamente.

④ Abilita l’avvio automatico (di solito non necessario ma consigliato per confermare)

sudo systemctl enable mariadb

⑤ Connettiti a MariaDB e verifica il funzionamento

sudo mysql

Se vedi il seguente prompt, l’installazione è avvenuta con successo:

MariaDB [(none)]>

Per uscire, digita exit;.

Inizializzazione di sicurezza obbligatoria dopo l’installazione

Immediatamente dopo l’installazione, MariaDB ha solo impostazioni di sicurezza minime applicate. Assicurati di eseguire il seguente comando:

sudo mysql_secure_installation

In generale, le seguenti risposte sono consigliate:

  • Rimuovere gli utenti anonimi → Y
  • Disabilitare l’accesso root da remoto → Y
  • Rimuovere il database di test → Y
  • Ricaricare le tabelle dei privilegi → Y

Questo completa la configurazione di un ambiente MariaDB sicuro su Ubuntu.

Versione di MariaDB installata in base alla versione di Ubuntu

  • Ubuntu 20.04 → MariaDB serie 10.3
  • Ubuntu 22.04 → MariaDB serie 10.6
  • Ubuntu 24.04 → MariaDB serie 10.11 (LTS)

Per la maggior parte degli utenti, la versione predefinita di Ubuntu è sufficiente. Considera il repository ufficiale solo se hai bisogno delle funzionalità più recenti.

Controlli rapidi se l’installazione fallisce o il servizio non si avvia

  • Controlla gli errori con sudo systemctl status mariadb
  • Controlla i log dettagliati con sudo journalctl -xe
  • Controlla lo spazio su disco con df -h

Nella maggior parte dei casi, il problema è dovuto a spazio su disco insufficiente o a un errore di battitura nel file di configurazione.

Scegliere la versione giusta di MariaDB per la tua versione di Ubuntu

Quando si usa MariaDB su Ubuntu, l’opzione più sicura nella maggior parte dei casi è la versione del repository predefinito. Gli aggiornamenti di sicurezza e la compatibilità delle dipendenze sono gestiti automaticamente, rendendola ideale per utenti principianti e intermedi.

Versione del repository predefinito di Ubuntu (consigliata)

  • Ubuntu 20.04 → MariaDB serie 10.3
  • Ubuntu 22.04 → MariaDB serie 10.6
  • Ubuntu 24.04 → MariaDB serie 10.11 (LTS)

A meno che tu non abbia un requisito specifico, queste versioni sono pienamente pratiche per l’uso in produzione.

Se hai bisogno dell’ultima versione (aggiungi il repository ufficiale di MariaDB)

Se hai bisogno delle funzionalità più recenti, puoi aggiungere il repository ufficiale di MariaDB. Poiché apt-key è deprecato, questo utilizza il metodo signed-by.

① Salva la chiave GPG

sudo mkdir -p /etc/apt/keyrings
sudo curl -fsSL https://mariadb.org/mariadb_release_signing_key.asc \
  | sudo gpg --dearmor -o /etc/apt/keyrings/mariadb.gpg

② Controlla il nome in codice della tua Ubuntu

lsb_release -cs

Esempi:

  • 20.04 → focal
  • 22.04 → jammy
  • 24.04 → noble

③ Aggiungi il repository ufficiale (esempio: serie 10.11)

echo "deb [signed-by=/etc/apt/keyrings/mariadb.gpg] \
https://mirror.mariadb.org/repo/10.11/ubuntu \
$(lsb_release -cs) main" \
| sudo tee /etc/apt/sources.list.d/mariadb.list

④ Aggiorna i pacchetti e installa

sudo apt update
sudo apt install mariadb-server mariadb-client

Note quando si utilizza il repository ufficiale

  • Puoi utilizzare funzionalità più recenti rispetto alla versione predefinita di Ubuntu
  • C’è un rischio futuro di conflitti di dipendenze
  • È necessario un test approfondito per i server di produzione

Per la produzione, decidi chiaramente se dai priorità alla stabilità o alle funzionalità più recenti.

Come verificare la versione di MariaDB attualmente installata

mysql --version

Esempio:

mysql  Ver 15.1 Distrib 10.6.16-MariaDB

Confermare esplicitamente la versione rende il troubleshooting e il lavoro di migrazione molto più facili.

Guida completa alla configurazione iniziale della sicurezza di MariaDB (mysql_secure_installation)

Subito dopo l’installazione di MariaDB, vengono applicate solo impostazioni di sicurezza minime. Per operare in sicurezza, assicurati di eseguire il seguente comando:

sudo mysql_secure_installation

All’esecuzione, appariranno diversi prompt. Nella maggior parte dei casi, sono consigliate le seguenti risposte.

Risposte consigliate

  • Inserisci la password corrente per root: → Premi Invio (non impostata al primo avvio)
  • Passare all’autenticazione unix_socket? → Y (Consigliato su Ubuntu)
  • Cambiare la password di root? → N (Se si utilizza l’autenticazione unix_socket)
  • Rimuovere gli utenti anonimi? → Y
  • Disabilitare l’accesso remoto di root? → Y
  • Rimuovere il database di test e l’accesso ad esso? → Y
  • Ricaricare le tabelle dei privilegi ora? → Y

Questo completa la configurazione di sicurezza di base.

Perché non è possibile accedere come root (Errore Access Denied)

Su Ubuntu, l’utente root utilizza per impostazione predefinita l’autenticazione unix_socket. Pertanto, l’accesso standard basato su password non funzionerà.

Sintomo di esempio

mysql -u root -p

Access denied for user 'root'@'localhost'

Metodo di accesso corretto (predefinito Ubuntu)

sudo mysql

Questo è il metodo più sicuro e consigliato.

Come cambiare root all’autenticazione con password (solo se necessario)

Cambia il metodo di autenticazione solo se devi connetterti come root da strumenti o applicazioni esterne.

① Connettersi a MariaDB

sudo mysql

② Cambiare il plugin di autenticazione

ALTER USER 'root'@'localhost'
IDENTIFIED WITH mysql_native_password
BY 'StrongPasswordHere';

FLUSH PRIVILEGES;

③ Confermare la modifica

SELECT user, host, plugin FROM mysql.user;

Se viene visualizzato mysql_native_password, la modifica è avvenuta con successo.

Come verificare il metodo di autenticazione corrente

sudo mysql -e "SELECT user, host, plugin FROM mysql.user;"

Principali metodi di autenticazione:

  • unix_socket → predefinito Ubuntu, sicuro
  • mysql_native_password → Autenticazione basata su password

A meno che non vi sia un motivo specifico, è più sicuro mantenere root con l’autenticazione unix_socket.

Errori comuni e soluzioni

ERRORE 1698 (28000): Access denied for user ‘root’@’localhost’

  • Causa: Tentativo di accesso basato su password
  • Soluzione: Accedi usando sudo mysql

mysql_secure_installation non trovato

  • Verifica con which mysql_secure_installation
  • Se non è installato, esegui sudo apt install mariadb-server

Impostare la codifica dei caratteri su utf8mb4 (prevenire testo illeggibile)

Per gestire in modo sicuro testi multilingue ed emoji in MariaDB, è consigliato utilizzare utf8mb4. Senza questa impostazione, potresti incontrare problemi di codifica o perdita di dati.

① Modificare il file di configurazione

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Aggiungi o modifica le seguenti righe nella sezione [mysqld]:

[mysqld]
character-set-server = utf8mb4
collation-server     = utf8mb4_general_ci

② Riavviare MariaDB

sudo systemctl restart mariadb

③ Verificare le impostazioni

sudo mysql -e "SHOW VARIABLES LIKE 'character_set%';"

Se viene visualizzato utf8mb4, la configurazione è avvenuta con successo.

Specificare utf8mb4 durante la creazione di un database (consigliato)

Se desideri definire esplicitamente il set di caratteri indipendentemente dalle impostazioni globali, specificalo durante la creazione del database.

CREATE DATABASE sample_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

Tutte le tabelle create all’interno di questo database erediteranno utf8mb4.

Creare un utente applicazione e concedere i permessi

Negli ambienti di produzione, non utilizzare mai l’utente root per le connessioni dell’applicazione. Crea un utente dedicato e concedi solo i privilegi minimi necessari.

① Accedi a MariaDB

sudo mysql

② Crea un Utente (Connessione Locale)

CREATE USER 'app_user'@'localhost'
IDENTIFIED BY 'StrongPasswordHere';

③ Concedi Privilegi al Database

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'localhost';

FLUSH PRIVILEGES;

Crea un Utente per Accesso Remoto (Solo se Necessario)

Configura questo solo se devi connetterti da un server esterno o da un ambiente cloud.

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Nota: Il carattere jolly “%” consente connessioni da qualsiasi host. Negli ambienti di produzione, specificare un indirizzo IP particolare è più sicuro.

Come Verificare Utenti e Privilegi Correnti

SELECT user, host FROM mysql.user;

SHOW GRANTS FOR 'app_user'@'localhost';

Errori di Permessi Comuni e Soluzioni

Accesso negato per l’utente ‘app_user’

  • Specifica dell’host errata (differenza tra localhost e %)
  • FLUSH PRIVILEGES non è stato eseguito
  • Nome del database errato durante la connessione

Database sconosciuto

  • Errore di battitura nel nome del database
  • Nessun privilegio concesso per il database di destinazione

Come Consentire Connessioni Remote in MariaDB (Correzione quando l’Accesso Esterno Fallisce)

Per impostazione predefinita, MariaDB consente solo connessioni locali. Se devi connetterti da un server esterno o da un ambiente cloud, configura le seguenti impostazioni.

① Modifica bind-address

Modifica il file di configurazione:

sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

Trova la seguente riga:

bind-address = 127.0.0.1

Per consentire connessioni esterne, cambiala in:

bind-address = 0.0.0.0

Dopo aver salvato, riavvia MariaDB:

sudo systemctl restart mariadb

② Apri la Porta 3306 nel Firewall

Se stai usando UFW su Ubuntu:

sudo ufw allow 3306
sudo ufw reload

Per una maggiore sicurezza, specifica l’indirizzo IP di origine:

sudo ufw allow from 192.168.1.10 to any port 3306

③ Crea un Utente per Accesso Remoto

CREATE USER 'app_user'@'%'
IDENTIFIED BY 'StrongPasswordHere';

GRANT ALL PRIVILEGES
ON sample_db.*
TO 'app_user'@'%';

FLUSH PRIVILEGES;

Per una migliore sicurezza:

CREATE USER 'app_user'@'192.168.1.10'
IDENTIFIED BY 'StrongPasswordHere';

Checklist se Non Riesci a Connetterti Esternamente

1. MariaDB è in Esecuzione?

sudo systemctl status mariadb

2. La Porta 3306 è in Ascolto?

sudo ss -tulnp | grep 3306

Se mostra 0.0.0.0:3306, sta ascoltando correttamente su tutte le interfacce.

3. Se Stai Usando un Ambiente Cloud (AWS / GCP / VPS)

  • Assicurati che la porta 3306 sia aperta nel gruppo di sicurezza
  • Conferma che nessun firewall esterno stia bloccando la connessione

4. Cause dal Messaggio di Errore

Impossibile connettersi al server MySQL

  • La porta è chiusa
  • bind-address non modificato
  • Firewall che blocca la connessione

Accesso negato per l’utente

  • Specifica dell’host dell’utente errata
  • Password errata
  • Privilegi non concessi

Connessione scaduta (timeout)

  • Impostazioni di sicurezza lato cloud
  • Problemi di routing di rete

Note di Sicurezza Importanti

  • Evita di usare “%” negli ambienti di produzione
  • Usa l’accesso VPN quando possibile
  • Considera l’abilitazione di connessioni SSL/TLS
  • Non consentire mai l’accesso remoto come root

Risoluzione dei Problemi quando MariaDB non si Avvia (Errore di Avvio)

① Verifica lo Stato del Servizio

sudo systemctl status mariadb

② Controlla i Log Dettagliati

sudo journalctl -xe
sudo cat /var/log/mysql/error.log

③ Cause Comuni

  • Errori di sintassi nel file di configurazione
  • Spazio su disco insufficiente
  • Conflitto di porta (MySQL già in esecuzione)

④ Verifica lo Spazio su Disco

df -h

Riepilogo delle Cause dell’Errore di Accesso Negato

  • Password errata
  • Specifica dell’host errata (differenza tra localhost e %)
  • FLUSH PRIVILEGES non eseguito
  • Tentativo di login standard per root (richiede sudo mysql )

Miglioramenti di Base delle Prestazioni (Per Principianti)

Non è necessario un tuning avanzato, ma almeno verifica le seguenti impostazioni.

① Abilita il Log delle Query Lente

Aggiungi quanto segue a 50-server.cnf:

slow_query_log = 1
slow_query_log_file = /var/log/mysql/slow.log
long_query_time = 2

Riavvia MariaDB:

sudo systemctl restart mariadb

② Verifica l’Utilizzo degli Indici

Le query lente potrebbero non avere gli indici appropriati.

EXPLAIN SELECT * FROM sample_table WHERE column_name = 'value';

③ Verifica le Risorse del Server

top
htop

Se la memoria è insufficiente, considera l’aggiornamento del piano del tuo server.

Domande Frequenti (FAQ)

Come posso bloccare la versione di MariaDB su Ubuntu 22.04?

Usa apt-mark hold mariadb-server.

Come posso reimpostare la password root se l’ho dimenticata?

Puoi reimpostarla avviando in modalità sicura e riconfigurando la password. Consulta la nostra guida dedicata per i passaggi dettagliati.

Come posso cambiare il numero di porta di MariaDB?

Modifica 50-server.cnf in qualcosa come port = 3307, quindi riavvia il servizio.

Conclusione: Usare MariaDB in Sicurezza su Ubuntu

  • Utilizzare la versione del repository predefinito è l’opzione più sicura
  • Esegui sempre mysql_secure_installation
  • Non usare mai root per le connessioni delle applicazioni
  • Abilita l’accesso remoto solo quando necessario
  • Quando si risolvono problemi, controllare i log è la massima priorità

Seguendo questi passaggi, puoi creare un ambiente MariaDB sicuro e pronto per la produzione su Ubuntu.