Introduzione

MySQL è il più popolare sistema di gestione di database relazionali open source.

L'ultima versione del server di database MySQL, versione 8.0, è disponibile per l'installazione dai repository CentOS 8 predefiniti.

MySQL 8.0 ha introdotto molte nuove funzionalità e modifiche che hanno reso alcune applicazioni incompatibili con questa versione. Prima di scegliere la versione di MySQL da installare, consultare la documentazione dell'applicazione che si intende distribuire sul server CentOS.

CentOS 8 fornisce anche MariaDB 10.3, che è "sostituzione drop-in" per MySQL 5.7, con alcune limitazioni. Se l'applicazione non è compatibile con MySQL 8.0, installare MariaDB 10.3.

In questo tutorial, ti mostreremo come installare e proteggere MySQL 8.0 su sistemi CentOS 8.

Se desideri installare MySQL su un server in remoto continua a leggere, altrimenti salta il primo paragrafo "Connessione al Server" e leggi il successivo.

Connessione al Server

Per accedere al server, è necessario conoscere l'indirizzo IP. Avrai anche bisogno dell'username e della password per l'autenticazione. Per connettersi al server come utente root digitare il seguente comando:

ssh [email protected]_DEL_SERVER

Successivamente sarà necessario inserire la password dell'utente root.

Se non utilizzate l'utente root potete connettervi con un'altro nome utente utilizzando lo stesso comando, quindi modificare root con il vostro nome_utente:

ssh [email protected]_DEL_SERVER

Successivamente vi verrà chiesto di inserire la password del vostro utente.

La porta standard per connettersi tramite ssh è la 22, se il vostro server utilizza una porta diversa, sarà necessario specificarla utilizzando il parametro -p, quindi digitare il seguente comando:

ssh [email protected]_DEL_SERVER -p PORTA

Installare MySQL 8.0 su CentOS 8

Installa il server MySQL 8.0 usando il gestore pacchetti CentOS come root o utente con privilegi sudo:

sudo dnf install @mysql

Il modulo @mysql installa MySQL e tutte le dipendenze.

Una volta completata l'installazione, avvia il servizio MySQL e abilitalo per l'avvio automatico all'avvio eseguendo il comando seguente:

sudo systemctl enable --now mysqld

Per verificare se il server MySQL è in esecuzione, digitare:

sudo systemctl status mysqld
● mysqld.service - MySQL 8.0 database server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-01-18 15:21:52 CET; 10min ago
  Process: 4498 ExecStopPost=/usr/libexec/mysql-wait-stop (code=exited, status=0/SUCCESS)
  Process: 4633 ExecStartPost=/usr/libexec/mysql-check-upgrade (code=exited, status=0/SUCCESS)
  Process: 4550 ExecStartPre=/usr/libexec/mysql-prepare-db-dir mysqld.service (code=exited, status=0/SUCCESS)
  Process: 4526 ExecStartPre=/usr/libexec/mysql-check-socket (code=exited, status=0/SUCCESS)
 Main PID: 4587 (mysqld)
   Status: "Server is operational"
    Tasks: 38 (limit: 12251)
   Memory: 385.4M
   CGroup: /system.slice/mysqld.service
           └─4587 /usr/libexec/mysqld --basedir=/usr

Protezione di MySQL

Esegui lo script mysql_secure_installation che esegue diverse operazioni relative alla sicurezza e imposta la password di root di MySQL:

sudo mysql_secure_installation

Ti verrà chiesto di configurare il VALIDATE PASSWORD PLUGIN, che viene utilizzato per testare la forza delle password degli utenti MySQL e migliorare la sicurezza. Esistono tre livelli di criteri di convalida della password, basso, medio e forte. Premere ENTER se non si desidera impostare il plug-in di convalida password.

Al prompt successivo, ti verrà chiesto di impostare una password per l'utente root MySQL. Una volta fatto ciò, lo script ti chiederà anche di rimuovere l'utente anonimo, limitare l'accesso dell'utente root al computer locale e rimuovere il database di test. Devi rispondere "Y" (sì) a tutte le domande.

Per interagire con il server MySQL dalla riga di comando, utilizzare l'utilità client MySQL, installata come dipendenza. Testare l'accesso root digitando:

mysql -u root -p

Inserisci la password di root quando richiesto e ti verrà presentata la shell MySQL come mostrato di seguito:

Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 12
Server version: 8.0.17 Source distribution

Questo è tutto! Hai installato e protetto MySQL 8.0 sul tuo server CentOS e sei pronto per usarlo.

Metodo di autenticazione

Il server MySQL 8.0 incluso nei repository CentOS 8 è impostato per utilizzare il vecchio plug-in di autenticazione mysql_native_password poiché alcuni strumenti client e librerie in CentOS 8 non sono compatibili con il metodo caching_sha2_password, impostato come predefinito nella versione upstream di MySQL 8.0.

il metodo mysql_native_password  dovrebbe andare bene per la maggior parte delle configurazioni. Tuttavia, se si desidera modificare il plug-in di autenticazione predefinito in caching_sha2_password che è più veloce e offre una migliore sicurezza, aprire il seguente file di configurazione:

sudo vim /etc/my.cnf.d/mysql-default-authentication-plugin.cnf

Modifica il valore di default_authentication_plugin in caching_sha2_password:

[mysqld]
default_authentication_plugin=caching_sha2_password

Chiudi e salva il file e riavvia il server MySQL per rendere effettive le modifiche:

sudo systemctl restart mysqld

Conclusione

CentOS 8 è distribuito con MySQL 8.0. Abbiamo visto come instalalre MySQL su CentOS 8 Linux.

Ora che il tuo server MySQL è attivo e funzionante, puoi connetterti alla shell MySQL e iniziare a creare nuovi database e utenti.