Con il rilascio di Debian 9 Stretch MySQL, il sistema di gestione di database relazionali open source più popolare al mondo non è più disponibile nei repository di Debian e MariaDB è diventato il sistema di database predefinito. MariaDB è una sostituzione binaria drop-in compatibile con le versioni precedenti di MySQL.
In questo tutorial, ti mostreremo come installare e proteggere MySQL su una macchina Debian 9 da MySQL Apt Repository. Se la tua applicazione non ha requisiti specifici, dovresti attenerti a MariaDB, il sistema di database predefinito in Debian 9.
Prerequisiti #
Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo.
Fase 1:configurazione del repository MySQL #
Per aggiungere il repository MySQL APT al tuo sistema vai alla pagina di download del repository e scarica l'ultimo pacchetto di rilascio usando il seguente comando wget:
wget http://repo.mysql.com/mysql-apt-config_0.8.10-1_all.deb
Una volta completato il download, installa il pacchetto di rilascio con il seguente comando:
sudo apt install ./mysql-apt-config_0.8.10-1_all.deb
Ti verrà presentato il menu di configurazione in cui puoi selezionare la versione di MySQL che desideri installare.
MySQL 8.0 è preselezionato, se vuoi installare un'altra versione di MySQL, seleziona MySQL Server & Cluster (Currently selected: mysql-8.0)
e scegli la tua versione MySQL preferita
Installeremo MySQL versione 8.0. Seleziona l'ultima opzione OK
e premi Enter
(come mostrato nell'immagine sopra) per salvare la configurazione.
Fase 2:installazione di MySQL #
Prima di installare MySQL sul tuo server Debian 9, aggiorna l'elenco dei pacchetti con:
sudo apt update
Una volta aggiornato l'elenco dei pacchetti, eseguire il comando seguente per installare MySQL sul server Debian:
sudo apt install mysql-server
Il programma di installazione ti chiederà di impostare la password di root di MySQL. Non impostare la password ora (lasciala vuota), lo faremo nella prossima sezione.
Successivamente, ti verrà presentato un messaggio che ti informa sulla nuova autenticazione MySQL 8. Prima di selezionare il plug-in di autenticazione MySQL 8 predefinito, assicurati che sia supportato dalla tua applicazione.
Fase 3:verifica dell'installazione di MySQL #
Una volta completata l'installazione, il servizio MySQL si avvierà automaticamente.
Possiamo controllare lo stato del servizio MySQL digitando:
sudo systemctl status mysql
● mysql.service - MySQL Community Server
Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset:
Active: active (running) since Thu 2018-08-02 17:22:18 UTC; 18s ago
Docs: man:mysqld(8)
http://dev.mysql.com/doc/refman/en/using-systemd.html
Process: 14797 ExecStartPre=/usr/share/mysql-8.0/mysql-systemd-start pre (co
Main PID: 14832 (mysqld)
Status: "SERVER_OPERATING"
Tasks: 37 (limit: 4915)
CGroup: /system.slice/mysql.service
└─14832 /usr/sbin/mysqld
Fase 4:protezione di MySQL #
Esegui mysql_secure_installation
comando per impostare la password di root e per migliorare la sicurezza dell'installazione di MySQL:
sudo mysql_secure_installation
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:
Ti verrà chiesto di configurare il VALIDATE PASSWORD PLUGIN
che viene utilizzato per testare la forza delle password degli utenti MySQL. Esistono tre livelli di criteri di convalida delle password, basso, medio e forte. Premi ENTER
se non desideri impostare il plug-in di convalida della password.
Please set the password for root here.
New password:
Re-enter new password:
Al prompt successivo, ti verrà chiesto di impostare una password per l'utente root di MySQL.
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
Success.
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
Success.
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
- Dropping test database...
Success.
- Removing privileges on test database...
Success.
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) : y
Success.
All done!
Dopo aver impostato la password di root, 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. Dovresti rispondere "Y" (sì) a tutte le domande.
Passaggio 5:connettiti a MySQL dalla riga di comando #
Per interagire con MySQL tramite il terminale utilizzeremo il client MySQL che viene installato come dipendenza del pacchetto del server MySQL.
Per accedere al server MySQL come utente root, digitare:
mysql -u root -p
Ti verrà chiesto di inserire la password di root che hai impostato in precedenza durante mysql_secure_installation
lo script è stato eseguito.
Una volta inserita la password, 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 10
Server version: 8.0.12 MySQL Community Server - GPL
Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
Crea un database #
Una volta connesso alla shell MySQL, puoi creare un nuovo database digitando il seguente comando:
CREATE DATABASE new_database;
Query OK, 1 row affected (0.00 sec)
Crea tabelle #
Ora che abbiamo creato un database possiamo creare una tabella per memorizzare alcuni dati.
Prima di eseguire le istruzioni SQL per la creazione di una tabella è necessario connettersi al database:
use new_database;
In questo esempio creeremo una semplice tabella denominata contacts
con tre campi, id
, name
e email
:
CREATE TABLE contacts (
id INT PRIMARY KEY,
name VARCHAR(30),
email VARCHAR(30)
);
Query OK, 1 row affected (0.00 sec)