MySQL è il popolarissimo database relazionale (RDBMS) gratuito e open source. Il suo ruolo è di contenitore per i dati: se parliamo di erogare un sito web, ad esempio, MySQL contiene gli account degli utenti registrati al sito, ma anche il listino prodotti, lo storico degli ordini o gli articoli pubblicati. In questa guida (essa stessa salvata all'interno di un database MySQL!) vedremo come installare MySQL 8 su PC, VPS o server Linux (Ubuntu), per iniziare subito a leggere e scrivere righe e tabelle dall'app che stiamo sviluppando o dal nostro web server con PHP
Trattazione aggiornata per funzionare al meglio con Ubuntu 24.04 e MySQL 8.4
In questo articolo ci concentreremo, nello specifico, sull'installazione di MySQL 8 in ambiente Linux. Per la guida equivalente incentrata su Windows:
» Leggi: La Grande Guida ad Apache, MySQL, PHP
La procedura seguente è stata testata su Ubuntu 24.04, 22.04 e 20.04 (sia "Desktop", sia "Server"), ma è analoga per tutte le distribuzioni derivate (fra le quali "Mint") e, presumibilmente, per le iterazioni successive.
Una stesura precedente di questa guida (archiviata qui) trattava anche CentOS, mentre oggi è focalizzata unicamente su Ubuntu.
Preparare il server
Per seguire questa guida hai bisogno di un sistema con Ubuntu, preferibilmente la più recente versione "LTS", sul quale installare MySQL. Alcune soluzioni sono:
- installarlo direttamente sul PC locale, se già monta Ubuntu "desktop"
- predisporre una macchina virtuale (VM)
- predisporre un container con Docker
- installare Ubuntu Server su un vecchio PC, poi installare NGINX su quello
Sono tutte soluzioni valide, se stai solo "smanettando" o per imparare, ma che richiedono comunque un po' di tempo e che si riveleranno poco pratiche quando vorrai rendere accessibile la tua applicazione o il tuo sito via Internet.
La soluzione migliore è l'acquisto di un Virtual Private Server (VPS), cioè una macchina virtuale in cloud fornita da un operatore di settore. Si parla di una spesa di pochi euro al mese, a fronte della quale sarai operativo immediatamente.
Connessione SSH
Devi poi connetterti al server sul quale vuoi installare MySQL tramite SSH. Abbiamo visto la procedura completa in questo approfondimento dedicato:
Valuta di configurare la connessione SSH per entrare senza password. Non è indispensabile, ma sicuramente ti semplifica molto la vita:
» Leggi: [guida] Come creare una chiave SSH da PC Windows, Linux, Mac e accedere ai server senza password
Da qui in poi daremo per scontato che tu abbia predisposto il tuo server e che ti sia connesso con successo in SSH.
Installare MySQL 8 su Linux Ubuntu: Installazione completamente automatica
Da questa situazione, puoi installare l'ultima versione di MySQL in modo completamente automatico impartendo questo singolo comando:
sudo apt update && sudo apt install curl -y && curl -sL https://turbolab.it/scarica/470 | sudo bash
In caso desiderassi installare una versione specifica, e non l'ultima disponibile, specificalo valorizzando la variabile MYSQL_VER=
in questo modo:
- MySQL 8.4 LTS (altamente consigliata):
sudo apt update && sudo apt install curl -y && curl -sL https://turbolab.it/scarica/470 | sudo MYSQL_VER=8.4 bash
- MySQL 8.0 LTS:
sudo apt update && sudo apt install curl -y && curl -sL https://turbolab.it/scarica/470 | sudo MYSQL_VER=8.0 bash
- MySQL 5.7 LTS (non più supportata e non-consigliata):
sudo apt update && sudo apt install curl -y && curl -sL https://turbolab.it/scarica/470 | sudo MYSQL_VER=5.7 bash
In caso fosse richiesta la password, digita quella associata al tuo utente Linux sul server.
Il comando appena impartito esegue uno script (visualizzabile qui) che svolge in sequenza tutte le tediose operazioni che, altrimenti, dovremmo impartire manualmente (vedi seguito dell'articolo)
Lo script genera automaticamente le credenziali per l'account root di MySQL. La password è generata casualmente, e diversa ad ogni esecuzione. Dette credenziali sono mostrate a schermo durante l'installazione, ma vengono anche salvate nel file /etc/turbolab.it/mysql.conf
Per evidenti motivi di sicurezza, tale file è accessibile solo disponendo dei privilegi di root. Per visualizzare il contenuto è dunque necessario preporre sudo
. Ad esempio:
sudo cat /etc/turbolab.it/mysql.conf
Un altro automatismo utile è la copia di un file di configurazione aggiuntivo (disponibile qui) nel percorso /etc/mysql/mysql.conf.d/webstackup.cnf
- vedi paragrafo dedicato, più avanti in questo articolo, per maggiori informazioni.
Infine, lo script installa e rende disponibile anche mysqltuner: uno strumento che permette di analizzare l'installazione e fornisce suggerimenti per ottimizzare le prestazioni
Nei prossimi paragrafi vedremo la procedura alternativa per svolgere manualmente gli stessi passaggi che lo script ha eseguito automaticamente. Se hai usato lo script, puoi saltare tutto e riprendere dal paragrafo Gestire il servizio mysql
.
Installare MySQL 8 su Linux Ubuntu, Passo 1: Diventare root
La procedura tramite script descritta ai paragrafi precedenti installa MySQL automaticamente ed è la modalità che, personalmente, raccomando. Se però preferisci installare MySQL manualmente, puoi ottenere un risultato analogo seguendo i passaggi forniti di seguito.
Per prima cosa, devi acquisire i privilegi massimi diventando root sul server nel quale desideri installare MySQL. Il comando è:
sudo -s
In caso fosse richiesta la password, digita quella associata al tuo utente Linux sul server
» Leggi anche: Sudo senza password con Ubuntu: come disabilitare la richiesta di password quando si eseguono comandi come root (video)
Installare MySQL 8 su Linux Ubuntu, Passo 2: Disinstallare... MySQL
Prima di proseguire, è opportuno verificare che MySQL non sia già stato installato, magari per errore. Il modo più efficace di farlo è tramite il gestore dei pacchetti:
dpkg --list | grep mysql
Se il comando non mostra alcuna risposta, possiamo tranquillamente andare oltre perché MySQL non è installato. In caso contrario, è fondamentale disinstallare il pacchetto di MySQL corrente:
apt purge --auto-remove mysql* -y
In caso comparisse un messaggio simile a This operation will remove the data directory at '/var/lib/mysql'
, è bene prestare la massima attenzione
Significa infatti che la procedura sta per rimuovere, oltre al "programma" MySQL, anche tutti i database salvati sul disco. Generalmente, vorremo rispondere No
, di modo da mantenere tutti i database già presenti sul sistema e riutilizzarli con la nuova versione di MySQL che stiamo per installare.
Se però sei stra-sicuro di voler fare piazza pulita di tutto, rispondi Yes
.
Infine, raccomando caldamente di eliminare eventuali file di configurazione relativi alla precedente installazione, di modo da partire con una situazione pulita:
rm -rf /etc/mysql
Installare MySQL 8 su Linux Ubuntu, Passo 3: Aggiungere i repository ufficiali di MySQL
Le distribuzioni Linux come Ubuntu rendono disponibili nei rispettivi repository i pacchetti per MySQL. Ma Oracle, lo sviluppatore di MySQL, offre una propria fonte ufficiale che contiene, generalmente, versioni più aggiornate. A mio avviso, è meglio prelevare MySQL da quest'ultima.
Iniziamo dunque impartendo questa sequenza di comandi concatenati per "agganciare" il repository MySQL di Oracle:
apt update && apt install curl gnupg -y && curl -o mysqlrepo https://dev.mysql.com/get/mysql-apt-config_0.8.33-1_all.deb -L && dpkg -i mysqlrepo && rm -f mysqlrepo
[ il comando comprende il nome di un file ad una determinata versione (mysql-apt-config_xxx.deb
). In linea di massima, quella indicata dovrebbe funzionare correttamente oggi e nel prossimo futuro. Così non fosse, prelevare l'URL al file aggiornato da questa pagina, quindi sostituirlo nel comando appena mostrato ]
Il comando avvia una mini-procedura che permette di scegliere la versione di MySQL da installare ed i vari pacchetti opzionali. Generalmente, vorremo solo scegliere Ok
in fondo alla lista e premere Invio
Installare MySQL 8 su Linux Ubuntu, Passo 4: Installazione del pacchetto MySQL
Il comando precedente configura solo l'utilizzo del repository MySQL di Oracle, ma non installa materialmente il programma. Per farlo, dobbiamo impartire quest'altro comando concatenato:
apt update && apt install mysql-server mysql-client -y
Installare MySQL 8 su Linux Ubuntu, Passo 5: Scegliere la password di root di MySQL
La procedura di setup ci richiede di scegliere una password per l'utente root
di MySQL, ovvero l'amministratore onnipotente del database, poi digitarla di nuovo per conferma
Installare MySQL 8 su Linux Ubuntu, Passo 6: Scelta del plugin di autenticazione
La procedura di installazione aggiornata non mostra più questa schermata di scelta e imposta automaticamente l'algoritmo più moderno e sicuro. Va bene così, considerato che oggi tutti i programmi, i tool e PHP 7.4.4 e successivi lo supportano nativamente.
La schermata successiva chiede di selezionare il plugin di autenticazione da utilizzare per impostazione predefinita. Le scelte disponibili sono:
caching_sha2_password
: nuovo algoritmo, ancora più sicuro ma meno compatibilemysql_native_password
: algoritmo "classico", compatibile con qualsiasi software in circolazione
Personalmente, raccomando di scegliere il plugin tradizionale (scelta corrispondente all'opzione Use Legacy Authentication Method
): questo garantirà la compatibilità ottimale, ad oggi ancora necessaria per utilizzare senza problemi molti driver e programmi di gestione.
Da qui in poi l'installazione si conclude automaticamente.
Installare MySQL 8 su Linux Ubuntu, Passo 7: Scaricare il file di configurazione aggiuntivo
Prima di andare oltre, raccomando di scaricare questo file di configurazione aggiuntivo:
curl -Lo /etc/mysql/mysql.conf.d/webstackup.cnf "https://raw.githubusercontent.com/TurboLabIt/webstackup/master/config/mysql/mysql.cnf" && chmod u=rw,go=r /etc/mysql/mysql.conf.d/*.cnf
Possiamo dunque ispezionarlo e modificarlo impartendo
nano /etc/mysql/mysql.conf.d/webstackup.cnf
Detto file contiene alcune impostazioni generalmente desiderabili, fra le quali segnalo:
- il processo accetta connessioni solo dal server stesso, non da Internet
- il numero massimo di connessioni contemporanee è alzato a
250
- varie ottimizzazioni ai parametri del motore InnoDB
Il file è comunque liberamente modificabile per meglio adattarsi alle specificità del server e dell'applicazione.
Per rendere effettive le modifiche, riavvia MySQL con
systemctl restart mysql
(riprendi da qui se hai usato lo script automatico!) Gestire il servizio mysql
MySQL è ora installato ed attivo, e il relativo servizio parte automaticamente ad ogni boot del sistema. È comunque bene ricordare rapidamente i comandi per gestire il servizio:
- visualizzazione stato:
systemctl status mysql
(battereQ
sulla tastiera per uscire) - avvio:
systemctl start mysql
- stop:
systemctl stop mysql
-
riavvio:
systemctl restart mysql
Connettersi tramite il client MySQL da linea di comando
Per testare immediatamente il database possiamo connetterci tramite linea di comando impartendo:
mysql -u root -p
Quando richiesto, digita la password di root:
- se hai usato lo script automatico, è stata impostata automaticamente ad una stringa casule (raccomandato) che puoi leggere impartendo
sudo cat /etc/turbolab.it/mysql.conf
- se hai installato il programma manualmente: è la password che hai scelto tu durante l'installazione (vedi precedente
Passo 5
)
Non appena vedrai il prompt mysql>
, significa che la connessione è stata stabilita e sei "dentro"!
Per fare una prova veloce, visualizza la lista dei database impartendo:
show databases;
Se stai lavorando su una nuova installazione, probabilmente vedrai i database "di sistema", fra i quali l'importantissimo mysql
che conserva le credenziali degli utenti e le informazioni relative ai privilegi di accesso ai vari database. In seguito, quando creerai i tuoi database, verranno anch'essi mostrati qui.
Per uscire, basta impartire exit;
.
Lavorare con il database tramite interfaccia grafica
Lavorare con i database da linea di comando va benissimo fino a quando dobbiamo svolgere operazioni di "gestione", ma non è per nulla molto comodo per manipolare i dati. Allo scopo, è molto meglio usare un tool con interfaccia grafica, che permette di visualizzare i database sottoforma di tabelle ed espone tutte le funzionalità necessarie per gestire i dati con pochi click
Per la guida passo passo a MySQL Workbench, il programma "ufficiale" fornito dallo sviluppatore di MySQL. fai riferimento a questo approfondimento dedicato:
» Leggi: Come connettersi a un database MySQL via SSH e lavorare con MySQL Workbench (guida rapida)
In caso MySQL Workbench non ti piacesse, nell'articolo appena indicato trovi anche alcune ottime alternative
Altre guide a MySQL
TI ricordo anche queste altre guide:
- MySQL, password di root dimenticata
- Come risolvere l'errore NO_PUBKEY
- Come spostare i file del database e salvare i dati in un altro percorso
- Database MySQL backup: esempi e guida rapida completa a mysqldump
- zzmysqldump
Per la lista completa, vedi tutti gli articoli con tag "mysql"