Salta al contenuto principale

Come Installare MySQL 8.4 in Debian 12 - Guida Completa

In questa guida vedremo come installare MySQL 8.4 in Debian 12 Bookworm con apt, il gestore di pacchetti di default

È molto comune nei nostri interventi di Assistenza Linux, essendo la base per gli stack LAMP (Linux, Apache, MySQL, PHP), LEMP (NginX) e svariati altri, necessari per Web App, CMS ed e-commerce

Configurazione Repository Ufficiale MySQL

Come primo passaggio, per installare MySQL 8.4 in Debian 12 Bookworm, scarichiamo il pacchetto di configurazione del repository ufficiale di MySQL

sudo apt update && sudo apt install wget
sudo wget https://dev.mysql.com/get/mysql-apt-config_0.8.32-1_all.deb

Installiamo il pacchetto scaricato

sudo apt install ./mysql-apt-config_0.8.32-1_all.deb

Durante la configurazione possiamo selezionare la versione desiderata, visualizzando una di queste schermate

  │ Which MySQL product do you wish to configure?                           │ 
  │                                                                         │ 
  │         MySQL Server & Cluster (Currently selected: mysql-8.4-lts)      │ 
  │         MySQL Connectors (Currently selected: Enabled)                  │
Configuring mysql-apt-config
----------------------------
The MySQL APT Repository features MySQL Server along with a variety of components. You may select the desired
products to install and update from the official MySQL Repository, and also select the associated version series.
Select "Ok" to save the configuration, and then execute "apt update" to load the selected package list. This
configuration can be updated later, depending on your needs.
 1. MySQL Server & Cluster (Currently selected: mysql-8.4-lts)  3. Ok
 2. MySQL Connectors (Currently selected: Enabled)
Which MySQL product do you wish to configure? 3

Se preferisci MySQL 8.0 modifica la selezione a mysql-8.0 e segui invece la nostra guida "Installare MySQL 8.0 in Debian 12 Bookworm"

Installare MySQL 8.4 in Debian 12

Aggiorniamo la lista dei pacchetti disponibili

sudo apt update

Noteremo delle nuove righe contenenti il nuovo repository MySQL 8.4 per Debian 12 Bookworm

Get:5 http://repo.mysql.com/apt/debian bookworm/mysql-8.4-lts Sources [951 B]
Get:6 http://repo.mysql.com/apt/debian bookworm/mysql-apt-config amd64 Packages [566 B]
Get:7 http://repo.mysql.com/apt/debian bookworm/mysql-8.4-lts amd64 Packages [16.9 kB]
Get:8 http://repo.mysql.com/apt/debian bookworm/mysql-tools amd64 Packages [4129 B]

Procediamo a installare MySQL con questo comando

sudo apt install mysql-server

Il processo ci richiederà se inserire una password, in questo caso ho lasciato vuoto, così l'autenticazione avverrà tramite Socket, solamente in locale. La configureremo in seguito

Controllo stato e riavvio MySQL

Siamo riusciti a Installare MySQL 8.4 in Debian 12 Bookworm. Il server dovrebbe essere già funzionante, controlliamo se il processo è attivo

sudo service mysql status

Nel caso non sia attivo possiamo riavviare MySQL e ripetere il controllo

sudo service mysql restart
* Stopping MySQL database server mysqld                         [ OK ]
* Starting MySQL database server mysqld                         [ OK ]

Controlliamo la porta default di MySQL, la 3306 TCP, che a questo punto dovrebbe essere in ascolto

sudo apt install net-tools
sudo netstat -tnplu |grep 3306

Il comando deve restituirci l'output seguente, mostrando la porta 3306 in ascolto in locale

tcp    0      0 127.0.0.1:3306      0.0.0.0:*   LISTEN      -
tcp6   0      0 :::33060            :::*        LISTEN      -

Configurare MySQL 8.4

Il server è attivo, per una nuova installazione le configurazioni utilizzate sono quelle di default, la sicurezza è scarsa, a questo punto è consigliato eseguire lo script di configurazione di MySQL per settare le autenticazioni e rimuovere gli accessi anonimi

sudo mysql_secure_installation

Lo script ci guiderà nella configurazione delle opzioni di sicurezza del server

Come prima cosa abilitiamo il controllo delle password per gli utenti, e selezioniamo le password forti, con ricerca a dizionario di password comuni

Securing the MySQL server deployment.
Connecting to MySQL using a blank password.
VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of password
and allows the users to set only those passwords which are
secure enough. Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters and dictionary                  file
Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 2
Please set the password for root here.
Skipping password set for root as authentication with auth_socket is used by default.
If you would like to use password authentication instead, this can be done with the "ALTER_USER" command.
See https://dev.mysql.com/doc/refman/8.4/en/alter-user.html#alter-user-password-management for more information.

Rimuoviamo gli utenti anonimi, per aumentare la sicurezza

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without having to have
a user account created for them. This is intended only for
testing, and to make the installation go a bit smoother.
You should remove them before moving into a production
environment.
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y

Configuriamo autenticazione locale dell'utente root, che avverrà tramite socket, solamente sulla macchina locale

Normally, root should only be allowed to connect from
'localhost'. This ensures that someone cannot guess at
the root password from the network.
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y

Rimuoviamo i database di test

By default, MySQL comes with a database named 'test' that
anyone can access. This is also intended only for testing,
and should be removed before moving into a production
environment.
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y

Effettuiamo il reload delle tabelle dei privilegi, in modo da applicare le nostre modifiche immediatamente.

Reloading the privilege tables will ensure that all changes
made so far will take effect immediately.
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : 

Accesso a MySQL da console

Abbiamo finito di Installare MySQL 8.4 in Debian 12 Bookworm. Possiamo accedere con l'utente root dalla console del nostro server, e ad esempio listare i database presenti

sudo mysql -u root

Collegandosi al database, da MySQL 8.4 è possibile che si visualizzi un errore, dovuto alla mancanza di un plugin:

ERROR 1524 (HY000): Plugin 'mysql_native_password' is not loaded

MySQL 8.4 e superiori implementano mysql_native_password, se visualizzi questo errore, segui la nostra guida per abilitare il plugin di autenticazione mysql_native_password

Effettuato il a MySQL listiamo i database presenti

show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| mysql              |
| performance_schema |
| sys                |
+--------------------+
4 rows in set (0.00 sec)

L'output ci indica i database presenti, siamo riusciti a installare MySQL in Debian 12 Bookworm, possiamo utilizzare con la solita sintassi il nostro MySQL, connettere ne nostre Web App e CMS

Password utente root di MySQL

Per accedere da remoto sarà necessario settare la password di root di MySQL. Possiamo utilizzare questo comando, ma consigliamo di utilizzare una password "forte", con numeri, maiuscole e minuscole e caratteri speciali.

ALTER USER 'root'@'localhost' IDENTIFIED BY 'LA_MIA_PASSWORD';

Accedere a MySQL remoto

Per accedere a un MySQL remoto è consigliato utilizzare un tunnel SSH ridirigendo la porta remota 3306 del nostro server, che ascolta solamente in localhost, sulla nostra porta 33006 locale

ssh root@IP-o-DNS -L 33006:localhost:3306

Grazie al tunnel potremmo connetterci direttamente alla nostra porta 33006 in localhost con le credenziali di root create prima

Accedere con MySQL Workbench

MySQL Workbench è un ottimo strumento per DBA MySQL e Operation, permette di creare DB, gestire la configurazione del server, amministrare gli utenti, effettuare backup e molto altro, e incorpora già il tunnel SSH descritto sopra

  1. Creiamo una nuova connessione
  2. Selezioniamo "Standard TCP/IP over SSH"
  3. Inseriamo le configurazioni di SSH per il nostro server di
    1. SSH Host name
    2. SSH User name
    3. Password o chiave SSH
  4. Le configurazioni del Database MySQL
    1. Host name
    2. Server Port
    3. Username
    4. Password
  5. Testiamo la connessione

Serve una mano?

Affidati alla nostra consulenza, Gratis 30m di analisi per il tuo sistema

Salve, io uso MySQL da anni ora per motivi aziendali mi devo spostare da Apple a Debian. Ho apprezzato molto la vostra pagina d'istruzione per l'installazione (l'unica che abbia funzionato !!!) ma ho grossi problemi con Workbench, mi sapreste dare una dritta per un'installazione pulita e non con quella schifezza di snap che lo fa partire da terminale? Grazie, Massimo [email protected]

Buongiorno Massimo, Grazie per il tuo commento, ci fa molto piacere che tu sia riuscito a installare MySQL su Debian seguendo la nostra guida. Testiamo tutte le nostre guide in ambienti aggiornati prima di pubblicarle per garantire il miglior risultato possibile. Personalmente, capisco bene la tua posizione su snap, soprattutto quando si tratta di software open source, ma offre sicuramente una soluzione più semplice per il rilascio. Detto questo, stiamo preparando una guida dedicata all'installazione di MySQL Workbench, e sarà disponibile presto sul nostro sito. Continua a seguirci, la rilasceremo appena possibile! In alternativa, se hai bisogno di un supporto più immediato, offriamo anche consulenza diretta

Aggiungi un commento

Comment

  • Elementi HTML permessi: <br> <p> <code class="language-*"> <pre>
  • Linee e paragrafi vanno a capo automaticamente.
  • Solo le immagini ospitate su questo sito possono essere utilizzate nel tag <img>.