# Installare MySQL in Ubuntu 20.04

[MySQL](https://www.ionos.it/digitalguide/server/know-how/cose-mysql/ "Cos’è MySQL?") è uno dei più popolari database open source. È particolarmente apprezzato per quanto riguarda **prestazioni, affidabilità e scalabilità** ed è utilizzato in molti settori, dai piccoli sistemi di web hosting alle grandi applicazioni aziendali. Qui ti guideremo durante ogni fase del processo di installazione di MySQL su Ubuntu 20.04, così che tu riesca a configurare un sistema di gestione di database affidabile e sicuro.

## Quali sono i requisiti di MySQL su Ubuntu 20.04?

Nell’insieme, i requisiti di sistema per installare MySQL su Ubuntu 20.04 sono relativamente limitati e dovrebbero poter essere soddisfatti dalla maggior parte dei moderni sistemi desktop e server. Occorre tuttavia considerare che i requisiti possono variare a seconda dell’uso che se ne intende fare e delle dimensioni del database. Se ad esempio hai intenzione di eseguire un’applicazione ad alta intensità che prevede l’uso di **grandi database o di query complesse**, saranno necessari requisiti di RAM e processore più elevati, in grado di garantire prestazioni migliori. Un disco rigido capiente consente di soddisfare le esigenze di una crescita futura e di ulteriori database.

Per garantire una comunicazione fluida tra il server MySQL e i client, è opportuno controllare attentamente anche **la configurazione della rete e le impostazioni del firewall**. Per evitare problemi di connessione, il server MySQL dovrebbe avere un indirizzo IP statico.

MySQL ha i seguenti requisiti minimi di hardware e software:

- **Processore (CPU)**: architettura x86-64, min. 1 GHz (Dual-Core)
- **Memoria ad accesso casuale (RAM)**: min. 1 GB
- **Sistema operativo**: Ubuntu 20.04, utente sudo con autorizzazioni root
- **Firewall**: porta 3306 MySQL aperta
- **Disco rigido**: min. 500 MB
- **Connessione internet**: per scaricare i pacchetti e stabilire la connessione al server MySQL

## Configurare MySQL su Ubuntu 20.04: istruzioni dettagliate

Per installare MySQL su Ubuntu 20.04 è possibile utilizzare il sistema di gestione dei pacchetti APT (Advanced Package Tool). Una volta terminata l’installazione, sarà necessario impostare e configurare MySQL prima di poterlo utilizzare proficuamente. A tal proposito, occorre anche impostare **la password di root e l’accesso per i client esterni**. Nel nostro tutorial ti mostreremo come procedere passo dopo passo.

### Primo passaggio: aggiornare l’indice del pacchetto

Per prima cosa, sarebbe opportuno aggiornare l’elenco dei pacchetti. Per farlo, basta eseguire il seguente comando:

```bash
$ sudo apt update
```

### Secondo passaggio: installare il server MySQL

A questo punto, installa il pacchetto del server MySQL tramite **APT**:

```bash
$ sudo apt install mysql-server
```

Il server può essere avviato manualmente con il comando **systemctl** per verificare che sia davvero in funzione:

```bash
$ sudo systemctl start mysql.service
```

### Terzo passaggio: configurare MySQL

Al termine dell’installazione, MySQL non è ancora conforme agli standard di sicurezza raccomandati. Per ovviare a questo problema, MySQL offre uno script che modifica le **impostazioni per proteggere il server**. Questo script si occupa, ad esempio, di impostare la password di root, rimuovere eventuali utenti anonimi e limitare l’accesso remoto.

Per eseguire correttamente lo script, tuttavia, è necessario prendere alcune precauzioni. Questo perché l’applicazione vorrà cambiare la password dell’account di root, che è disabilitata per impostazione predefinita in [Ubuntu](https://www.ionos.it/digitalguide/server/know-how/ubuntu-il-sistema-linux-per-tutti/ "Ubuntu: il sistema Linux per tutti"). Per aggirare l’errore, occorre modificare il **metodo di autenticazione dell’utente root**.

Avvia il prompt di MySQL:

```bash
$ sudo mysql
```

Con l’istruzione **ALTER USER** imposti una password per root:

```bash
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
```

Ora chiudi nuovamente il prompt di MySQL:

```bash
mysql> exit
```

Esegui lo script di sicurezza:

```bash
$ sudo mysql_secure_installation
```

Per autenticarti come utente root, immetti quanto segue:

```bash
$ mysql -u root -p
```

Terminato lo script, puoi cambiare di nuovo il metodo di autenticazione predefinito:

```bash
mysql> ALTER USER 'root'@'localhost' IDENTIFIED WITH auth_socket;
```

In questo modo sarai in grado di connetterti nuovamente mediante il comando **sudo mysql**.

### Quarto passaggio: creazione dell’utente MySQL

Con l’installazione di MySQL viene creata la figura dell’utente root, che ha tutti i privilegi per il server MySQL e il controllo completo su tutti i database, le tabelle e le utenze. Al fine di aumentare la sicurezza, è quindi opportuno creare l’**utente con privilegi limitati**.

Per farlo, apri il prompt di MySQL:

```bash
$ sudo mysql
```

Se come metodo di autenticazione è stata impostata una password, utilizza il seguente comando:

```bash
$ mysql -u root -p
```

Ora crea una nuova utenza per MySQL:

```bash
mysql> CREATE USER 'username'@'host' IDENTIFIED WITH authentication_plugin BY 'password';
```

Al posto di “username” inserisci il tuo nome utente e al posto di “host” inserisci il nome del tuo host. Se stai eseguendo Ubuntu in locale, scrivi **localhost**. La dicitura “WITH authentication\_plugin” è facoltativa. Il plugin “auth\_socket” dispone di impostazioni di sicurezza abbastanza forti da non richiedere una password per l’accesso.

In assenza di ulteriori specifiche, MySQL si avvale del plugin “caching\_sha2\_password” per l’autenticazione. Alcune versioni di PHP, tuttavia, non sono compatibili con questo plugin. Puoi sempre ricorrere al vecchio ma collaudato plugin “mysql\_native\_password”:

```bash
mysql> CREATE USER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
```

In alternativa, è possibile utilizzare la funzione “ALTER” per utenti già esistenti:

```bash
mysql> ALTER 'username'@'host' IDENTIFIED WITH mysql_native_password BY 'password';
```

### Quinto passaggio: assegnare i permessi

Adesso è necessario stabilire quali privilegi assegnare all’utente appena creato. La sintassi generale è la seguente:

```bash
mysql> GRANT PRIVILEGE ON database.table TO 'username'@'host';
```

I privilegi multipli sono separati da una virgola. Per applicare i privilegi **globali**, sostituisci “database.table” con un asterisco (“\*”).

Nell’esempio seguente, diamo all’utente le autorizzazioni per creare (CREATE), modificare (ALTER), cancellare (DROP), inserire (INSERT), selezionare (SELECT), aggiornare (UPDATE) e rimuovere (DELETE) i dati di una tabella.

```bash
mysql> GRANT CREATE, ALTER, DROP, INSERT, UPDATE, DELETE, SELECT on *.* TO 'user'@'host' WITH GRANT OPTION;
```

Utilizzando “WITH GRANT OPTION”, l’utente può anche concedere i propri permessi ad altri.

Svuota ora la cache con “FLUSH PRIVILEGES”:

```bash
mysql> FLUSH PRIVILEGES;
```

A questo punto è possibile chiudere il prompt di MySQL:

```bash
mysql> exit
```

Effettua il login con il nuovo nome utente:

```bash
$ mysql -u username -p
```

### Sesto passaggio: testare MySQL

Verifica che MySQL sia in esecuzione correttamente, ad esempio attraverso il gestore di sistema **Systemd**:

```bash
$ systemctl status mysql.service
```

In alternativa, puoi effettuare la connessione al database MySQL. Usa il seguente comando per accedere a MySQL e visualizzare la versione del server:

```bash
$ sudo mysqladmin -p -u username version
```


This is a markdown version of: [https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/mysql-su-ubuntu-2004/](https://www.ionos.it/digitalguide/siti-web/programmazione-del-sito-web/mysql-su-ubuntu-2004/) for AI/LLM consumption.