1 15/05/2026 10 min

Quando ha senso rimuovere MySQL da Ubuntu

Disinstallare MySQL su Ubuntu è un’operazione semplice solo in apparenza. Se il server è usato in produzione, la parte delicata non è tanto il comando di rimozione, quanto quello che viene prima e quello che resta dopo. La domanda corretta non è “come tolgo MySQL?”, ma “cosa devo preservare, fermare o migrare prima di rimuoverlo?”.

In pratica, i casi tipici sono tre: hai installato MySQL per test e vuoi liberare il sistema; stai passando a MariaDB o a un’istanza gestita; oppure devi fare pulizia su una macchina che non deve più esporre alcun database locale. In tutti e tre gli scenari, il punto è evitare di cancellare dati utili o lasciare in giro servizi, socket, socket file, repository e configurazioni che poi confondono il troubleshooting.

Se l’obiettivo è davvero rimuovere MySQL in modo corretto, la sequenza giusta è: verificare cosa è installato, fermare il servizio, disinstallare i pacchetti, pulire i residui, e solo alla fine decidere se eliminare anche i dati. Quest’ultimo passaggio va fatto solo se sei certo di non dover recuperare nulla.

Prima verifica: quale MySQL hai davvero sul sistema

Su Ubuntu il nome “MySQL” può nascondere più componenti: il server, il client, librerie comuni, plugin, metapacchetti e talvolta configurazioni lasciate da installazioni precedenti. Prima di toccare nulla, conviene vedere con precisione cosa c’è installato e se il servizio è attivo.

Questi comandi danno una fotografia rapida:

dpkg -l | grep -E 'mysql-server|mysql-client|mysql-common|mysql-server-core|mysql-client-core'
systemctl status mysql --no-pager
mysql --version

Se `systemctl status mysql` mostra `active (running)`, il motore è ancora in esecuzione. Se invece il pacchetto non compare ma il comando `mysql` esiste, potresti avere solo il client o librerie residue. Questo dettaglio conta, perché il modo in cui ripulisci il sistema cambia se devi rimuovere il server oppure solo gli strumenti di accesso.

Se vuoi capire anche dove sono i dati, controlla il datadir e le configurazioni principali:

sudo ls -ld /var/lib/mysql /etc/mysql
sudo grep -R "^datadir\|^socket\|^port" /etc/mysql 2>/dev/null

Il percorso predefinito del datadir su Ubuntu è quasi sempre `/var/lib/mysql`. Se lo hai spostato, magari su un volume dedicato, non assumere che la rimozione del pacchetto tocchi quei file: spesso restano intatti proprio perché stanno fuori dal controllo diretto del package manager.

Rimozione corretta: fermare il servizio prima di disinstallare

La prima azione reversibile è fermare MySQL. Non serve essere creativi: si ferma il servizio, si verifica che non ci siano processi rimasti appesi, e solo dopo si procede con la disinstallazione. Questo riduce il rischio di file bloccati o di stato incoerente durante la rimozione.

sudo systemctl stop mysql
systemctl status mysql --no-pager
ps -ef | grep -E '[m]ysqld|[m]ysql'

Se `systemctl status` mostra `inactive (dead)` e non trovi processi `mysqld`, sei nella condizione giusta per passare alla rimozione. Se invece il processo resta vivo, c’è un problema da capire prima di forzare lo stop: un servizio dipendente, un restart automatico o una gestione non standard.

Una volta fermato il servizio, la disinstallazione standard su Ubuntu si fa con APT. In genere conviene rimuovere sia il server sia i componenti correlati, ma senza cancellare subito i dati:

sudo apt remove mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

Questa scelta rimuove i pacchetti ma lascia in genere i file di configurazione marcati come “conffiles”. È utile se vuoi poi reinstallare senza perdere l’impostazione base, ma non basta se l’obiettivo è una pulizia completa.

Se vuoi una rimozione più netta, puoi usare `purge` invece di `remove`:

sudo apt purge mysql-server mysql-client mysql-common mysql-server-core-* mysql-client-core-*

Qui il blast radius è più ampio: spariscono anche i file di configurazione gestiti dal pacchetto. Prima di fare questo passo, salva quello che ti serve, in particolare eventuali modifiche a `my.cnf` o alle directory incluse in `/etc/mysql/`.

Pulizia dei residui: dipendenze, config e repository

Dopo la rimozione dei pacchetti principali, restano spesso librerie orfane e configurazioni residue. La pulizia va fatta con criterio, non con il coltello lungo. Prima verifica cosa è rimasto installato e se ci sono pacchetti non più necessari.

sudo apt autoremove --purge
sudo dpkg -l | grep -E 'mysql|mariadb'

`autoremove --purge` è il passaggio che più spesso completa davvero la disinstallazione, perché elimina dipendenze installate solo per MySQL. Il secondo comando serve a capire se sono rimasti pacchetti collegati, magari installati manualmente o trascinati da altri software.

Se avevi aggiunto il repository ufficiale di MySQL, rimuovilo anche lui. È un dettaglio che molti dimenticano, poi si ritrovano aggiornamenti o metadati di pacchetto che non servono più.

ls /etc/apt/sources.list.d/
grep -R "repo.mysql.com\|mysql" /etc/apt/sources.list /etc/apt/sources.list.d/

Se trovi un file come `/etc/apt/sources.list.d/mysql.list`, eliminalo solo dopo aver verificato che non serva per altri componenti della macchina. Poi aggiorna l’indice APT:

sudo rm -f /etc/apt/sources.list.d/mysql.list
sudo apt update

Se usi configurazioni personalizzate in `/etc/mysql/`, valuta se archiviarle prima della rimozione completa. Un backup semplice basta spesso a evitare rimpianti inutili:

sudo tar -czf /root/mysql-etc-backup.tar.gz /etc/mysql

Questo non è un passaggio obbligatorio, ma è utile quando la macchina fa parte di un ambiente più grande e vuoi tracciare eventuali parametri utili da riutilizzare altrove.

Se vuoi eliminare anche i dati: attenzione a /var/lib/mysql

La parte che fa davvero la differenza è la rimozione dei dati. Finché lasci intatto il datadir, MySQL può essere reinstallato e ritrovare database, tabelle e log. Se invece cancelli `/var/lib/mysql`, il recupero dipende solo da backup, snapshot o replica. Non è un dettaglio secondario.

Prima di cancellare, verifica dove si trovano i dati e se l’istanza è davvero quella giusta:

sudo mysql -e "SHOW VARIABLES LIKE 'datadir';"
sudo du -sh /var/lib/mysql

Se il server non parte più ma il datadir esiste, non assumere che sia vuoto. Anche un’istanza apparentemente inutilizzata può contenere database applicativi, account, eventi schedulati e log binari utili per audit o ripristino.

Solo se hai un backup verificato e non ti serve più nulla, puoi rimuovere i dati residui. Questa è l’azione con maggiore impatto, quindi va fatta con consapevolezza del rischio e con un rollback possibile tramite restore del backup:

# Rischio: distruzione dati locali se il datadir non è stato salvato.
# Prerequisito: backup o snapshot verificato.
sudo rm -rf /var/lib/mysql

Se hai usato un datadir diverso, sostituisci il percorso corretto. Non cancellare a occhi chiusi directory generiche come `/var/lib/` o `/etc/`, perché il danno diventerebbe immediato e non limitato a MySQL.

Controlli finali: verificare che MySQL sia davvero sparito

Dopo la rimozione, controlla tre cose: il servizio non deve esistere o non deve essere attivo, i pacchetti non devono comparire in `dpkg`, e le porte non devono risultare in ascolto. Questi tre segnali insieme ti dicono se la disinstallazione è stata completa o solo parziale.

systemctl status mysql --no-pager
ss -ltnp | grep 3306
dpkg -l | grep -E 'mysql-server|mysql-client|mysql-common'

Se `ss` non mostra nulla sulla 3306 e `dpkg` non restituisce pacchetti correlati, il risultato è coerente. Se invece resta in ascolto qualcosa, potresti avere un altro motore compatibile, un container, oppure un’istanza avviata manualmente fuori da systemd.

Un controllo utile è anche cercare residui di configurazione e directory dati:

sudo find /etc -maxdepth 2 -type d -name 'mysql'
sudo find /var/lib -maxdepth 1 -type d -name 'mysql'

Se trovi ancora directory vuote o con file, decidi se archiviarle o eliminarle in base al tuo obiettivo. La regola pratica è semplice: se la macchina deve restare pulita e non ospiterà più MySQL, rimuovi anche i residui; se invece prevedi una reinstallazione a breve, conserva almeno i backup delle configurazioni.

Disinstallare MySQL e installare MariaDB al suo posto

Un caso frequente è la sostituzione di MySQL con MariaDB. In questo scenario conviene evitare sovrapposizioni confuse: prima rimuovi MySQL, poi installi MariaDB. Mischiare i due pacchetti senza ordine può creare conflitti di socket, servizi e client.

Dopo aver ripulito MySQL, puoi installare MariaDB con i pacchetti della distribuzione. Il vantaggio è che Ubuntu gestisce meglio la compatibilità e la transizione dei servizi. Prima però verifica che non restino repository o configurazioni di MySQL che possano interferire.

sudo apt update
sudo apt install mariadb-server
systemctl status mariadb --no-pager

Se stai facendo una migrazione vera, non limitarti alla disinstallazione: esporta i database, testa la compatibilità degli utenti e verifica gli engine usati dalle applicazioni. La rimozione del vecchio server è solo l’ultima tappa della transizione.

Errore comune: confondere client, server e librerie

Uno degli errori più comuni è credere di aver rimosso MySQL quando in realtà hai tolto solo il server. Il comando `mysql` può restare disponibile perché appartiene al client, e alcune applicazioni possono continuare a portarsi dietro librerie come `libmysqlclient`. Questo non significa che il motore sia ancora attivo, ma può dare l’impressione che la disinstallazione sia incompleta.

Se vuoi distinguere bene i ruoli, ragiona così: il server è `mysqld`, il client è il programma con cui ti connetti, le librerie sono il supporto usato da altre applicazioni. Rimuovere solo uno di questi tre livelli non equivale a “disinstallare MySQL” in senso pieno.

Per questo, quando documenti il cambio, è utile annotare quale pacchetto è stato rimosso e quale no. Un comando come questo aiuta a evitare ambiguità in seguito:

dpkg -l | grep -E '^ii\s+(mysql|libmysqlclient|mariadb)'

Se in output compaiono ancora librerie o client, non è per forza un problema. Lo diventa solo se il tuo obiettivo era una rimozione totale o se qualche software dipende ancora da quei pacchetti.

Checklist operativa breve

Se vuoi una sequenza asciutta da usare sul campo, questa è la versione essenziale:

  1. Verifica pacchetti e servizio con `dpkg -l` e `systemctl status mysql`.
  2. Ferma il servizio con `sudo systemctl stop mysql`.
  3. Rimuovi i pacchetti con `sudo apt remove` oppure `sudo apt purge` se vuoi anche i file di configurazione.
  4. Pulisci i residui con `sudo apt autoremove --purge`.
  5. Controlla eventuali repository in `/etc/apt/sources.list.d/`.
  6. Decidi se conservare o cancellare `/var/lib/mysql` in base ai backup disponibili.
  7. Verifica che non ci siano più processi, porte in ascolto o pacchetti MySQL installati.

Questa sequenza è volutamente conservativa. In ambiente server è meglio impiegare due minuti in più a verificare che dover ricostruire un’istanza o recuperare dati persi per eccesso di fiducia nei comandi di rimozione.

In pratica

Disinstallare MySQL su Ubuntu in modo corretto significa separare tre piani: il servizio, i pacchetti e i dati. Se li tratti come un unico blocco, rischi di lasciare residui inutili o, peggio, di cancellare informazioni che non avevi ancora salvato. La scelta giusta dipende sempre dall’obiettivo finale: liberare una macchina, migrare a un altro motore, o fare pulizia completa dopo un test.

La regola pratica è semplice: prima osserva, poi fermati, poi rimuovi, e solo alla fine cancella i dati se hai un backup verificato. Su una macchina di produzione questa non è prudenza eccessiva; è il modo normale di lavorare quando un database è coinvolto.