GNU/Linux >> Linux Esercitazione >  >> Debian

Come installare MySQL 8 su Debian 10

MySQL è un sistema di database relazionale open source che funziona su molti sistemi operativi, inclusi Windows, Linux, macOS e FreeBSD. È probabilmente l'RDBMS OpenSource più popolare e un componente centrale degli stack LAMP e LEMP. Molte applicazioni dipendono da MySQL come WordPress, Joomla, TYPO3, phpBB e molti altri.

Diverse nuove funzionalità sono state aggiunte a MySQL 8, tra cui supporto JSON, Transactional Data Dictionary, configurazione di runtime persistente, archivio documenti, suggerimenti per l'ottimizzatore, ruoli SQL, CTE, funzioni della finestra, indici invisibili e molti altri.

Cosa imparerai?

In questo tutorial imparerai alcune cose relative al server MySQL e di seguito sono riportati i dettagli su:

  • Installa MySQL Server 8 su Debian Buster 10
  • Imposta la password di root MySQL
  • Distribuzione sicura del server MySQL (cambia indirizzo di collegamento, porta e così via)
  • Configura SSL e abilita la connessione remota per il server MySQL
  • Installa e configura phpMyAdmin
  • Query MySQL di base per la creazione di utenti, database, ecc.
  • Imposta database MySQL di backup automatico

Prerequisiti

Installeremo MySQL Server 8.04 sull'ultimo Debian Buster 10 con 2 GB di RAM e 4 CPU per questa guida. Inoltre, abbiamo bisogno del privilegio di root per installare pacchetti e modificare le configurazioni di sistema.

Passaggio 1:aggiungi il repository MySQL

Per questo tutorial, installeremo MySQL Server 8 dal repository MySQL ufficiale. Per farlo, dobbiamo aggiungere il repository MySQL ufficiale al nostro server Debian.

Prima di aggiungere il repository MySQL, installa il pacchetto 'GnuPG' usando il comando apt di seguito.

sudo apt install gnupg -y

Una volta completata l'installazione, scarica il repository MySQL APT e aggiungilo al tuo sistema.

wget -q http://repo.mysql.com/mysql-apt-config_0.8.15-1_all.deb
sudo dpkg -i mysql-apt-config_0.8.15-1_all.deb

Lascia il repository come predefinito e seleziona 'OK '.

E il repository ufficiale di MySQL è stato aggiunto.

Quindi, aggiorna tutti i repository disponibili sul sistema Debian usando il comando seguente.

sudo apt update

E otterrai il repository MySQL ufficiale nell'elenco seguente.

Come si può vedere, è stato aggiunto il repository MySQL ufficiale e siamo pronti per installare MySQL Server 8.0 su Debian Buster 10.

Passaggio 2:installazione di MySQL Server

Per installare MySQL Server 8.0 sul sistema Debian, esegui il comando apt di seguito.

sudo apt install mysql-server

Ora digita la password di root per l'installazione di MySQL e scegli 'OK '.

Ripeti la password per il tuo utente root MySQL.

Successivamente, ti verrà chiesto di configurare il plug-in di autenticazione predefinito di MySQL. Seleziona "Crittografia password avanzata ' come consigliato e scegli 'OK '.

E l'installazione di MySQL Server 8.0 è terminata.

Ora controlla il servizio MySQL usando il seguente comando.

systemctl is-enabled mysql
systemctl status mysql

Di seguito è riportato il risultato che otterrai.

Di conseguenza, il servizio MySQL è attivo e funzionante sul server Debian. Il servizio verrà eseguito automaticamente ad ogni avvio del sistema.

Passaggio 3:distribuzione sicura di MySQL utilizzando mysql_secure_password

In questo passaggio, miglioreremo la sicurezza dell'installazione del server MySQL utilizzando 'mysql_secure_installation ' strumento da riga di comando.

La 'installazione_mysql_secure ' ti aiuterà a migliorare la tua distribuzione MySQL da diversi aspetti, come impostare la sicurezza della password, disabilitare l'accesso remoto e rimuovere utenti anonimi predefiniti e database di test.

Ora esegui 'mysql_secure_installation ' sulla tua shell.

mysql_secure_installation

All'inizio dell'installazione di MySQL, hai già configurato la password di root per MySQL. Ora digita la password per continuare con il processo.

Enter the password for user root: TYPE YOUR MYSQL ROOT PASSWORD

Successivamente, digita "Y ' per configurare la 'CONVALIDA PASSWORD ' componente.

VALIDATE PASSWORD COMPONENT can be used to test passwords
and improve security. It checks the strength of the 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

Ora scegli il livello del criterio di convalida della password per tutti gli utenti. Digita '2 ' per impostare 'STRONG ' criterio a livello di password.

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
Using existing password for root.

Ora il comando 'mysql_secure_installation' verificherà la sicurezza della tua password attuale. Come si può vedere, la forza della nostra password attuale è "50 '. Ora digita 'Y ' per cambiare la password corrente con una nuova password più forte.

Estimated strength of the password: 50 
Change the password for root? ((Press y|Y for Yes, any other key for No) : Y

Ora digita la tua password complessa e assicurati di avere il punteggio 100 , quindi digita "Y ' per continuare con la nuova password.

New password: 

Re-enter new password:

Estimated strength of the password: 100
Do you wish to continue with the password provided? (Press y|Y for Yes, any other key for No) : Y

Di conseguenza, il componente MySQL 'VALIDATE PASSWORD' è stato configurato con una policy password complessa ed è stata creata la nuova password MySQL.

Successivamente, ti verrà chiesto di rimuovere l'utente anonimo predefinito. Digita 'Y ' per rimuovere l'utente anonimo predefinito per la tua installazione.

By default, a MySQL installation has an anonymous user,
allowing anyone to log into MySQL without creating a user account. 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

Quindi, digita "Y ' di nuovo per disabilitare il login remoto MySQL e se vuoi che il server MySQL sia accessibile solo localmente.

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

Dopodiché, rimuovi il database predefinito "test" dal tuo server MySQL. Digita 'Y ' e premi Invio per continuare.

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

Quindi, digita 'Y' di nuovo per ricaricare le tabelle dei privilegi. In effetti, sono state applicate nuove modifiche alla configurazione di MySQL.

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

Di conseguenza, la distribuzione sicura del server MySQL utilizzando lo script 'mysql_secure_installation' è stata completata. E a questo punto, hai abilitato il componente 'VALIDATE PASSWORD' con la policy di password complessa di livello '2', inoltre è stata configurata la nuova password di root complessa per MySQL.

Passaggio 4 - Proteggi il server MySQL utilizzando una configurazione aggiuntiva

Per questo tutorial, aggiungeremo una configurazione aggiuntiva per migliorare la distribuzione di MySQL Server. Specificare l'indirizzo di collegamento del server MySQL, modificare la porta predefinita, disabilitare il caricamento del file di dati e impostare una politica di scadenza della password per tutti gli utenti MySQL.

Ora vai nella directory '/etc/mysql/conf.d/' e crea una nuova configurazione 'mysqld.cnf' usando l'editor vim.

cd /etc/mysql/conf.d/
vim mysqld.cnf

Incolla la seguente configurazione al suo interno.

[mysqld]

# MySQL running on 127.0.0.1 with port 8320
bind-address=127.0.0.1
port=8320

# Disable LOAD DATA LOCA
local-infile=0

# Password Expiration to 60 Days
default_password_lifetime=60

# MySQLX Plugin running on 127.0.0.1 with port 8321
mysqlx_bind_address=127.0.0.1
mysqlx_port=8321

Salva e chiudi.

Quindi, riavvia il servizio MySQL e controlla le porte aperte sul sistema usando il comando seguente.

systemctl restart mysql
ss -plnt

Di seguito è riportato il risultato che otterrai.

Come si può vedere, il server MySQL è attivo e funzionante sull'indirizzo IP locale '127.0.0.1' sulla porta TCP non predefinita '8320'.

Successivamente, per accedere alla shell MySQL con la porta personalizzata, puoi utilizzare il comando 'mysql' con l'opzione '-P port' come di seguito.

mysql -u root -P 8320 -p

Digitare la password di root per il server MySQL.

Dopo aver effettuato l'accesso, esegui la seguente query per verificare la configurazione della porta del server MySQL.

show variables like 'port';

E otterrai che il server MySQL è in esecuzione sulla porta personalizzata '8320' come di seguito.

Di conseguenza, hai configurato il server MySQL per essere eseguito sull'indirizzo IP locale "127.0.0.1" con la porta TCP personalizzata "8320".

Passaggio 5:proteggi e abilita la connessione remota MySQL tramite SSL

Si supponga di voler distribuire il server MySQL sulla rete interna e consentire ad altri host sulla stessa rete di accedere ai database sul server MySQL. In tal caso, si consiglia di abilitare SSL per la distribuzione di MySQL Server.

In questo passaggio imparerai come configurare e abilitare SSL e l'accesso remoto sul server MySQL.

Genera certificati SSL

Per impostazione predefinita, MySQL Server 8.0 genera automaticamente i certificati SSL durante l'installazione. Tutti i certificati SSL predefiniti sono disponibili nella directory '/var/lib/mysql'.

Per questo passaggio, genereremo un nuovo certificato SSL per il server MySQL utilizzando 'mysql_ssl_rsa_setup ' strumento da riga di comando.

Ora crea una nuova directory SSL '/etc/mysql/certs' e cambia la proprietà di quella directory con l'utente 'mysql'.

mkdir -p /etc/mysql/certs/
sudo chown -R mysql:mysql /etc/mysql/certs

Quindi, genera nuovi certificati SSL per il server MySQL utilizzando il comando seguente. E assicurati di cambiare '--suffix=STRING ' con il tuo nome comune.

sudo mysql_ssl_rsa_setup --suffix=HakasMySQLSrv --uid=mysql --datadir=/etc/mysql/certs/

Una volta completato, sono stati generati nuovi certificati SSL per il server MySQL nella directory '/etc/mysql/certs'.

Controlla i tuoi certificati SSL usando il seguente comando.

ls -lah /etc/mysql/certs/
openssl verify -CAfile /etc/mysql/certs/ca.pem /etc/mysql/certs/server-cert.pem /etc/mysql/certs/client-cert.pem

Di seguito è riportato il risultato che otterrai.

I nuovi certificati SSL per MySQL Server sono stati generati nella directory '/etc/mysql/certs/'.

Abilita SSL e server MySQL di accesso remoto

Per abilitare SSL e l'accesso remoto sul server MySQL, dovrai modificare l'opzione 'bind-address' con l'indirizzo IP della tua rete interna e aggiungere la configurazione SSL per MySQL.

Ora vai nella directory '/etc/mysql/conf.d/' e modifica la configurazione che abbiamo creato sopra 'mysqld.cnf' usando l'editor vim.

cd /etc/mysql/conf.d/
vim mysqld.cnf

Modifica l'"indirizzo di collegamento" con il tuo indirizzo IP interno come di seguito.

bind-address=172.16.0.3

Quindi, aggiungi la configurazione SSL per il server MySQL di seguito e modifica il percorso SSL con il tuo.

ssl-ca=/etc/mysql/certs/ca.pem
ssl-cert=/etc/mysql/certs/server-cert.pem
ssl-key=/etc/mysql/certs/server-key.pem

Inoltre, puoi specificare la versione TLS di tutti i tuoi client e forzarli a utilizzare solo la connessione SSL sicura utilizzando la seguente configurazione.

#require_secure_transport=ON
tls_version=TLSv1.1,TLSv1.2

Salva e chiudi.

Quindi, riavvia il servizio MySQL per applicare la nuova configurazione e controlla l'indirizzo IP del server MySQL utilizzando il comando seguente.

systemctl restart mysql
ss -plnt

E otterrai che il server MySQL sia attivo e funzionante sull'indirizzo IP della rete interna con SSL abilitato.

Configura client e verifica connessione SSL

Per connetterti al server MySQL da un altro host/client, devi creare un nuovo utente MySQL, copiare i certificati del client e aggiungere la configurazione MySQL per il client.

Accedi alla shell MySQL usando il seguente comando.

mysql -u root -P 8320 -p

Ora crea un nuovo utente MySQL per la connessione remota usando la seguente query.

CREATE USER 'remoteuser'@'%' IDENTIFIED WITH mysql_native_password BY 'MyRemoteUserPasswordMySQL39==' REQUIRE SSL;
GRANT ALL PRIVILEGES ON *.* TO 'remoteuser'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Digita 'uscita ' per disconnettersi dalla shell MySQL.

Successivamente, è necessario copiare la CA e il certificato client e la chiave sulla macchina client utilizzando il comando SCP come di seguito.

scp /etc/mysql/certs/ca.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-cert.pem [email protected]:/certificates/directory/
scp /etc/mysql/certs/client-key.pem [email protected]:/certificates/directory/

Dopodiché, connettiti alla tua macchina client e crea una nuova configurazione usando l'editor vim.

vim ~/.my.cnf

Incolla la configurazione del client MySQL come di seguito e modifica il percorso del certificato SSL del client con il tuo.

[client]
ssl-ca=/home/gpk/certs/ca.pem
ssl-cert=/home/gpk/certs/client-cert.pem
ssl-key=/home/gpk/certs/client-key.pem

Salva e chiudi.

Per connetterti al server MySQL remoto con una porta personalizzata, esegui il comando 'mysql' di seguito.

mysql -u remoteuser -h 172.16.0.3 -P 8320 -p

Dopo aver effettuato l'accesso, controlla lo stato della connessione utilizzando la seguente query.

STATUS
SELECT * FROM performance_schema.session_status
       WHERE VARIABLE_NAME IN ('Ssl_version','Ssl_cipher');

Di seguito è riportato il risultato che otterrai.

Come puoi vedere, hai effettuato l'accesso con connessione sicura SSL TLSv1.2 al server MySQL.

Di conseguenza, è stato abilitato l'accesso remoto con una connessione SSL sicura per MySQL Server.

Fase 6 - Installa e configura phpMyAdmin

In questo passaggio imparerai come installare l'ultima versione di phpMyAdmin con il server web Apache. Imparerai anche come connetterti al server MySQL sull'host remoto con una porta personalizzata e perdere in modo sicuro tramite SSL da phpMyAdmin.

Prima di andare oltre, installa alcune dipendenze dei pacchetti usando il comando apt di seguito.

sudo apt install apache2 libapache2-mod-php php-imagick php-phpseclib php-php-gettext php-common php-mysql php-gd php-imap php-json php-curl php-zip php-xml php-mbstring php-bz2 php-intl php-gmp unzip

Quindi, vai alla directory '/var/www/html' e scarica l'ultimo codice sorgente di phpMyAdmin.

cd /var/www/html/
wget -q https://www.phpmyadmin.net/downloads/phpMyAdmin-latest-all-languages.tar.gz

Ora estrai il codice sorgente di phpMyAdmin e rinomina nella nuova directory denominata 'phpMyAdmin'.

tar -xf phpMyAdmin-latest-all-languages.tar.gz
mv phpMyAdmin-5.0.2-all-languages phpMyAdmin

Quindi, vai alla directory '/var/www/phpMyAdmin' e copia il file di configurazione predefinito in 'config.inc.php'.

cd /var/www/html/phpMyAdmin/
cp config.sample.inc.php config.inc.php

Modifica il file di configurazione 'config.inc.php' usando l'editor vim.

vim config.inc.php

Genera il codice segreto del pesce palla utilizzando questo link e incolla il codice nella riga 'blowfish_secret' come di seguito.

$cfg['blowfish_secret'] = '6}2]RFleN-JT=/vXD}L/0j0v.YALV/e3'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */

Quindi, digita i dettagli del tuo server MySQL nella riga "Configurazione del server" come di seguito.

/**
 * Servers configuration
 */
$i = 0;

.....
/* Custom MySQL Server Configuration */
$cfg['Servers'][$i]['host'] = '172.16.0.3';
$cfg['Servers'][$i]['port'] = '8320';
.....

Successivamente, incolla la seguente configurazione per abilitare la comunicazione SSL da phpMyAdmin a MySQL Server. E assicurati di modificare il percorso del client e dei certificati CA con il tuo e assicurati che l'utente "www-data" possa accedere ai certificati CA e client.

/* SSL Configuration */
$cfg['Servers'][$i]['ssl'] = true;
$cfg['Servers'][$i]['ssl_key'] = '/opt/mysql/certs/client-key.pem';
$cfg['Servers'][$i]['ssl_cert'] = '/opt/mysql/certs/client-cert.pem';
$cfg['Servers'][$i]['ssl_ca'] = '/opt/mysql/certs/ca.pem';

/* Disable SSL Verification for Self-signed certificates */
/* The Good: Connection between phpMyAdmin and MySQL Server are Encrypted */
/* But you're still vulnerable with the MiTM */
$cfg['Servers'][$i]['ssl_verify'] = false;

/* Hide Some Databases */
$cfg['Servers'][$i]['hide_db'] = '(information_schema|performance_schema|sys|mysql)';

Salva e chiudi.

Ora cambia la proprietà della directory 'phpMyAdmin' con l'utente 'www-data'.

sudo chown -R www-data:www-data /var/www/html/phpMyAdmin

E l'installazione e la configurazione di phpMyAdmin di phpMyAdmin sono state completate.

Ora accedi al server MySQL, controlla lo stato SSL di MySQL, crea un nuovo database e un nuovo utente per phpMyAdmin.

Accedi al server MySQL utilizzando il comando seguente.

mysql -u root -P 8329 -p

Ora controlla lo stato SSL utilizzando le seguenti query.

SHOW VARIABLES LIKE '%ssl%';
STATUS

Di seguito è riportato il risultato che otterrai.

Come si può vedere, il server MySQL è attivo e funzionante con SSL abilitato su di esso e utilizza i certificati SSL che abbiamo generato. Siamo anche collegati al server MySQL tramite la connessione sicura SSL utilizzando il file di configurazione '~/.my.cnf'.

Quindi, crea un nuovo database e un utente chiamato 'phpmyadmin' usando la seguente query.

CREATE DATABASE phpmyadmin;
CREATE USER 'phpmyadmin'@'%' IDENTIFIED WITH mysql_native_password BY 'phpMyAdminAdmn352#$';
GRANT ALL PRIVILEGES ON *.* TO 'phpmyadmin'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Digita 'uscita ' per disconnettersi da MySQL Shell.

Ora apri il tuo browser web e digita l'indirizzo IP del server con il percorso di 'phpMyAdmin' sulla barra degli indirizzi.

http://server-ip/phpMyAdmin/

Nella pagina di accesso di phpMyAdmin, digita l'utente 'phpmyadmin' con la password che abbiamo creato in alto e fai clic sul pulsante 'Vai'.

E otterrai la dashboard di phpMyAdmin come di seguito.

Di conseguenza, l'installazione e la configurazione di phpMyAdmin sono state completate.

Passaggio 7:crea un utente e un database MySQL

In questo passaggio imparerai l'utilizzo principale delle query MySQL per la gestione di utenti, database e il comando mysqldump di base per il backup del database.

Connettiti al server MySQL e verifica lo stato della connessione

Per connetterti al server MySQL, puoi usare la riga di comando 'mysql'. E per impostazione predefinita, tutte le connessioni dal server MySQL locale utilizzeranno il socket Unix, che la connessione SSL non rende più sicure le connessioni.

Connettiti al server MySQL con la configurazione predefinita usando il comando seguente.

mysql -u username -p

Se il tuo server MySQL è in esecuzione sulla porta personalizzata, usa l'opzione '-P port' qui sotto.

mysql -u root -P 8320 -p

Se il tuo server MySQL funziona sulla rete locale con la porta personalizzata, usa le opzioni 'h host/IP Address' e '-P port' di seguito.

mysql -u root -h 172.16.0.3 -P 8320 -p

Dopo esserti connesso al tuo server MySQL, esegui la seguente query per verificare lo stato della connessione.

STATUS

E otterrai il seguente risultato.

E sei connesso con successo al server MySQL.

Crea e mostra database

Dopo esserti connesso alla shell MySQL, imparerai come creare il database MySQL, selezionare il database, creare tabelle e inserire dati.

Per creare un nuovo database MySQL, utilizza la seguente query.

CREATE DATABASE hakase_db;
CREATE DATABASE yume_db;
CREATE DATABASE juice_db;

Ora controlla tutti i database degli elenchi sul tuo server MySQL usando la seguente query.

SHOW DATABASES;
SHOW DATABASES LIKE "%db%";

Successivamente, puoi cambiare e selezionare il database utilizzando la seguente query.

USE hakase_db;

Successivamente, puoi creare una nuova tabella sul tuo database utilizzando la query "CREA TABELLA" come di seguito.

CREATE TABLE users (first VARCHAR(20), last VARCHAR(20),
        email VARCHAR(20), birth DATE, country VARCHAR(20));

Ora puoi usare 'DESCRIBE table-name' per controllare tutti i campi del tuo database.

DESCRIBE users;

E otterrai tutti i campi dei dettagli nella tabella "utenti".

Successivamente, puoi inserire i dati manualmente nella tabella utilizzando la query "INSERT" come di seguito.

INSERT INTO users
       VALUES ('Mark','Mine','[email protected]','1999-03-20','Canada');

Ora hai inserito correttamente i dati nel database MySQL. Quindi, controlla tutti i dati sulla tabella utilizzando la query "SELECT" come di seguito.

SELECT * FROM users;
SELECT email, birth, country FROM users;

E otterrai tutti i dati dalla tua tabella.

Crea utente MySQL

Dopo aver creato il database, imparerai come creare un utente sul server MySQL e concedere i privilegi utente ai database.

La query MySQL di base per la creazione di un utente è l'utilizzo della query 'CREATE USER'. Quindi puoi concedere i privilegi del database al tuo utente usando il comando 'GRANT' seguito dalle sue opzioni. E l'ultimo è necessario ricaricare le tabelle delle sovvenzioni per applicare le nuove modifiche.

  • Il Base

Crea un nuovo utente denominato "[email protected]" con la password "MyHakasePasswordMySQL39==" e consenti tutti i privilegi di "hakase_db" all'utente utilizzando la query seguente.

CREATE USER 'hakase'@'localhost' IDENTIFIED BY 'MyHakasePasswordMySQL39==';
GRANT ALL PRIVILEGES ON hakase_db.* TO 'hakase'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Informazioni aggiuntive, il nome host "[email protected]" fa parte del nome dell'account. '@localhost' consente all'utente di connettersi solo dal server locale. Se non viene fornito, l'impostazione predefinita è '%' che consente agli utenti di qualsiasi luogo.

  • Crea utente per l'accesso remoto con plug-in di autenticazione specifico

Creeremo un nuovo utente che può accedere solo dall'indirizzo IP dell'host specifico e utilizzare il particolare plug-in di autenticazione.

Creeremo un nuovo utente chiamato "yume" che si connetterà tramite l'IP del client "172.16.0.4" con il plug-in di autenticazione "mysql_native_password" e l'utente potrà accedere solo al database "yume_db".

CREATE USER 'yume'@'172.16.0.4' IDENTIFIED WITH mysql_native_password BY 'MyYumePasswordMySQL39==';
GRANT ALL PRIVILEGES ON yume_db.* TO 'yume'@'172.16.0.4' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Di conseguenza, l'utente 'yume' si connetterà solo al server MySQL con l'indirizzo IP '172.16.0.4'. In caso contrario, l'autenticazione dell'utente verrà negata dal server MySQL.

  • Crea utente e forza l'utilizzo di una connessione SSL crittografata

Per costringere l'utente a utilizzare la connessione protetta SSL, è possibile utilizzare l'opzione "RICHIEDI SSL". Se la connessione sicura fallisce, non puoi connetterti al server MySQL (non puoi stabilire le connessioni).

Per uno scenario più sicuro, puoi utilizzare la query "REQUIRE X509", il che significa che la connessione al server MySQL viene stabilita solo quando la macchina utente/client ha fornito i certificati client e CA.

Crea un nuovo utente chiamato 'juice' con il nome host '%'. Questa opzione del nome host '%' consente all'utente 'juice' di connettersi da qualsiasi indirizzo IP, ma la connessione verrà stabilita quando la macchina client ha fornito i certificati client e CA.

CREATE USER 'juice'@'%' IDENTIFIED WITH mysql_native_password BY 'MyJuicePasswordMySQL39==' REQUIRE X509;
GRANT ALL PRIVILEGES ON juice_db.* TO 'juice'@'%' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Di conseguenza, l'utente "juice" può connettersi al server MySQL quando la macchina ha fornito client e certificati CA.

Mostra tutti gli utenti disponibili e le sovvenzioni

Dopo aver creato tutti gli utenti, controlla tutti gli utenti utilizzando le seguenti query.

SELECT User, Host FROM mysql.user;
SELECT User, Host, plugin FROM mysql.user;

Ora otterrai i dettagli dell'utente, dell'host e dei plug-in di autenticazione utilizzati dagli utenti.

Quindi, controlla tutti i privilegi degli utenti utilizzando la query "MOSTRA GRANT" come di seguito.

SHOW GRANTS FOR 'hakase'@'localhost';
SHOW GRANTS FOR 'yume'@'172.16.0.3';
SHOW GRANTS FOR 'juice'@'%';

Ora otterrai privilegi dettagliati dei tuoi utenti.

Di conseguenza, hai imparato l'utilizzo principale di MySQL Server, inclusa la creazione di un database, la creazione di una tabella, l'inserimento di dati nella tabella, la creazione e la visualizzazione di utenti e la visualizzazione dei privilegi dei dettagli di ciascun utente.

Passaggio 8 - Aggiuntivo:crea un database MySQL di backup incrementale

Per questo passaggio, imparerai l'utilizzo principale del comando 'mysqldump' per il backup di tutti i database MySQL. La riga di comando 'mysqldump' consente di eseguire il backup di tutti i database, database specifici o multipli e tabelle di backup.

Prima di procedere oltre, crea la directory di backup ed entra in essa.

mkdir -p ~/backup; cd ~/backup

E sei pronto per creare il backup dei database MySQL utilizzando l'utilità 'mysqldump'.

Esegui il backup di tutti i database

Per eseguire il backup di tutti i database sul server MySQL, utilizzare il comando mysqldump con l'opzione '--add-databases' di seguito.

mysqldump -u root -P 8320 --all-databases -p > alldbs.sql

Ora otterrai tutti i backup dei tuoi database nel singolo file SQL chiamato 'alldbs.sql'.

Backup del database specifico

Per eseguire il backup del database MySQL specifico, includi il nome del database nel comando mysqldump di seguito.

mysqldump -u root -P 8320 -p hakase_db > backup_hakase_db.sql

Di conseguenza, otterrai il file di backup SQL dal database 'hakase_db' denominato 'backup_hakase_db.sql' nella directory di backup.

Backup di più database

Se desideri creare un backup di più database (non tutti i database sul server MySQL), utilizza l'opzione '--database' di seguito.

mysqldump -u root -P 8320 -p --databases yume_db juice_db > multi-db-once.sql

Di conseguenza, è stato creato il file di backup per i tuoi due database 'yume_db' e 'juice_db', denominato file 'multi-db-once.sql'.

Backup automatico del database MySQL

Per impostare un backup automatico per MySQL, utilizzeremo il 'cron' di Linux. Creeremo un nuovo script bash per i database MySQL e lo eseguiremo automaticamente in un momento specifico utilizzando Linux Cron.

Prima di andare oltre, accedi alla shell MySQL usando il comando seguente.

mysql -u root -P 8320 -p

Crea un nuovo utente di backup con alcuni privilegi utilizzando la seguente query.

CREATE USER 'backup'@'localhost' IDENTIFIED WITH mysql_native_password BY 'MyBackupPasswordMySQL39==';
GRANT PROCESS, SELECT, LOCK TABLES, SHOW VIEW, EVENT ON *.* TO 'backup'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ora digita 'exit' per uscire dalla shell MySQL.

Quindi, crea una nuova directory di backup '/opt/backup/mysql' per archiviare tutti i file di backup del database.

mkdir -p /opt/backup/mysql

Successivamente, vai alla directory '/usr/local/sbin' e crea un nuovo file bash 'auto_backup.sh' usando l'editor vim.

cd /usr/local/sbin/
vim auto_backup.sh

Modifica i dettagli utente, password e porta con i tuoi e incolla la configurazione al suo interno.

#!/bin/bash

# Basic configuration: datestamp e.g., YYYYMMDD
DATE=$(date +"%Y%m%d")

# Location of your backups (create the directory first!)
BACKUP_DIR="/opt/backup/mysql"

# MySQL login details
MYSQL_USER="backup"
MYSQL_PASSWORD="MyBackupPasswordMySQL39=="

# MySQL executable locations (no need to change this)
MYSQL=/usr/bin/mysql
MYSQLDUMP=/usr/bin/mysqldump

# MySQL databases you wish to skip
SKIPDATABASES="Database|information_schema|performance_schema|mysql"

# Number of days to keep the directories (older than X days will be removed)
RETENTION=14

# ---- DO NOT CHANGE BELOW THIS LINE ------------------------------------------
#
# Create a new directory into the backup directory location for this date
mkdir -p $BACKUP_DIR/$DATE

# Retrieve a list of all databases
databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"`

# Dumb the databases in seperate names and gzip the .sql file
for db in $databases; do
echo $db
$MYSQLDUMP --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz"
done

# Remove files older than X days
find $BACKUP_DIR/* -mtime +$RETENTION -delete

Salva e chiudi.

Now make the 'auto_backup.sh' script executable and run the script for testing purposes.

chmod +x auto_backup.sh
./auto_backup.sh

As a result, you will get your database backup files on the '/opt/mysql/backup-current-date' directory. Check using the following command.

ls -lah /opt/backup/mysql/
ls -lah /opt/backup/mysql/datedir/

Di seguito è riportato il risultato che otterrai.

As a result, you will get compressed files of your database backup, which means the script is working.

Next, create a new cronjob that will be running the MySQL auto backup script 'auto_backup.sh' every day at the time '00:00'.

Set the default editor to 'vim' and create a new cronjob as user root using the following command.

export EDITOR=vim
crontab -u root -e

Ora incolla la seguente configurazione al suo interno.

0 0 * * * sh /usr/local/sbin/auto_backup.sh

Salva e chiudi.

The new cronjob for user root has been created. Check all cronjob list for the root user using the following command.

crontab -u root -l

And you will get details cron configuration for the user root.

As a result, you've successfully set up the automatic MySQL database backup using the bash script and Linux Cron.

Finally, you've learned how to install and secure the MySQL Database Server on the Debian Buster 10 with phpMyAdmin web-based database management. Also, you've learned the basic MySQL query for managing users, create database and tables, and using the mysqldump utility for backup databases.

Riferimenti

  • https://dev.mysql.com/doc/refman/en/
  • https://docs.phpmyadmin.net/en/latest/index.html

Debian
  1. Come installare Redis Server su Debian 11

  2. Come installare MySQL 8.0 / 5.7 su Debian 11 / Debian 10

  3. Come installare MySQL Server su Debian 9

  4. Come installare MySQL Workbench su Debian 10

  5. Come installare MySQL su Debian 11

Come installare Todoman sul server Debian 11

Come installare FastPanel su Debian 11

Come installare I2P su Debian Server:

Come installare MySQL 8.0 Server su Debian 11 Bullseye

Come installare VNC su Debian 10

Come installare il server VNC su Debian 11