A database server is an critical component of the network infrastructure necessary for today’s applications. Without the ability to store, retrieve, update, and delete data (when needed), the usefulness and scope of web and desktop apps becomes very limited.

Sapere come installare, gestire e configurare un server di database (in modo che funzioni come previsto) è una competenza essenziale che ogni amministratore di sistema deve avere.
In questo articolo esamineremo brevemente come installare e proteggere un server di database MariaDB e poi spiegheremo come configurarlo.
Installazione e Protezione di un Server MariaDB
In CentOS 7.x, MariaDB ha sostituito MySQL, che può ancora essere trovato in Ubuntu (insieme a MariaDB). Lo stesso vale per openSUSE.
Per brevità, utilizzeremo solo MariaDB in questo tutorial, ma si noti che oltre ad avere nomi e filosofie di sviluppo diversi, entrambi i Sistemi di Gestione di Database Relazionali (RDBMSs per esteso) sono quasi identici.
Ciò significa che i comandi lato client sono gli stessi sia su MySQL che su MariaDB, e i file di configurazione sono nominati e posizionati negli stessi posti.
Per installare MariaDB, eseguire:
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # yum update && yum install mariadb mariadb-server # CentOS --------------- On Debian and Ubuntu --------------- $ sudo aptitude update && sudo aptitude install mariadb-client mariadb-server --------------- On openSUSE --------------- # zypper update && zypper install mariadb mariadb-tools # openSUSE
Si noti che, in Ubuntu, ti verrà chiesto di inserire una password per l’utente root di RDBMS.
Una volta installati i pacchetti sopra, assicurarsi che il servizio di database sia in esecuzione e sia stato attivato per l’avvio automatico (in CentOS e openSUSE sarà necessario eseguire questa operazione manualmente, mentre in Ubuntu il processo di installazione si sarà già occupato di questo per te):
--------------- On CentOS/RHEL 7 and Fedora 23 --------------- # systemctl start mariadb && systemctl enable mariadb --------------- On openSUSE --------------- # systemctl start mysql && systemctl enable mysql
Eseguire quindi lo script mysql_secure_installation
. Questo processo ti permetterà di:
- imposta / reimposta la password per l’utente root del RDBMS
- rimuovi i login anonimi (consentendo così solo agli utenti con un account valido di accedere al RDBMS)
- disabilita l’accesso root per le macchine diverse da localhost
- rimuovi il database di test (a cui chiunque può accedere)
- attiva le modifiche associate ai punti da 1 a 4.
Per una descrizione più dettagliata di questo processo, puoi fare riferimento alla sezione Post-installazione in Installare il Database MariaDB in RHEL/CentOS/Fedora e Debian/Ubuntu.
Configurazione del Server MariaDB
Le opzioni di configurazione predefinite sono lette dai seguenti file nell’ordine indicato: /etc/mysql/my.cnf
, /etc/my.cnf
e ~/.my.cnf
.
Spesso esiste solo il file /etc/my.cnf
. È su questo file che imposteremo le impostazioni a livello di server (che possono essere sovrascritte con le stesse impostazioni in ~/.my.cnf
per ciascun utente).
La prima cosa da notare riguardo a my.cnf
è che le impostazioni sono organizzate in categorie (o gruppi) in cui ciascun nome di categoria è racchiuso tra parentesi quadre.
Le configurazioni di sistema del server sono fornite nella sezione [mysqld]
, dove tipicamente troverai solo le prime due impostazioni nella tabella qui sotto. Il resto sono altre opzioni utilizzate frequentemente (dove indicato, cambieremo il valore predefinito con uno personalizzato a nostra scelta):
Setting and description | Default value |
datadir is the directory where the data files are stored. | datadir=/var/lib/mysql |
socket indicates the name and location of the socket file that is used for local client connections. Keep in mind that a socket file is a resource that is utilized to pass information between applications. | socket=/var/lib/mysql/mysql.sock |
bind_address is the address where the database server will listen on for TCP/IP connections. If you need your server to listen on more than one IP address, leave out this setting (0.0.0.0 which means it will listen on all IP addresses assigned to this specific host).
Cambieremo questo per istruire il servizio ad ascoltare solo sul suo indirizzo principale (192.168.0.13): bind_address=192.168.0.13 |
bind_address=0.0.0.0 |
port represents the port where the database server will be listening.
Sostituiremo il valore predefinito (3306) con 20500 (ma dobbiamo assicurarci che nessun altro stia utilizzando quella porta): Anche se alcune persone sosterranno che la sicurezza tramite l’oscuramento non è una pratica corretta, cambiare le porte predefinite dell’applicazione con numeri più alti è un metodo rudimentale – ma efficace – per scoraggiare le scansioni delle porte. |
port=3306 |
innodb_buffer_pool_size is the buffer pool (in bytes) of memory that is allocated for data and indexes that are accessed frequently when using Innodb (which is the default in MariaDB) or XtraDB as storage engine.
Sostituiremo il valore predefinito con 256 MB: innodb_buffer_pool_size=256M |
innodb_buffer_pool_size=134217728 |
skip_name_resolve indicates whether hostnames will be resolved or not on incoming connections. If set to 1, as we will do in this guide, only IP addresses.
A meno che tu non abbia bisogno di nomi host per determinare le autorizzazioni, è consigliabile disabilitare questa variabile (per accelerare connessioni e query) impostando il suo valore su 1: skip_name_resolve=1 |
skip_name_resolve=0 |
query_cache_size represents the size (in bytes) available to the query cache in disk, where the results of SELECT queries are stored for future use when an identical query (to the same database and using the same protocol and same character set) is performed.
Dovresti scegliere una dimensione della cache delle query che corrisponda alle tue esigenze basate su 1) il numero di query ripetitive e 2) il numero approssimativo di record che ci si aspetta che restituiscano tali query ripetitive. Imposteremo questo valore su 100 MB per il momento: query_cache_size=100M |
query_cache_size=0 (which means it is disabled by default) |
max_connections is the maximum number of simultaneous client connections to the server. We will set this value to 30: max_connections=30Each connection will use a thread, and thus will consume memory. Take this fact into account while setting max_connections. |
max_connections=151 |
thread_cache_size indicates the numbers of threads that the server allocates for reuse after a client disconnects and frees thread(s) previously in use. In this situation, it is cheaper (performance-wise) to reuse a thread than instantiating a new one.
Anche in questo caso, dipende dal numero di connessioni che ti aspetti. Possiamo impostare in modo sicuro questo valore a metà del numero di max_connections: thread_cache_size=15 |
thread_cache_size=0 (disabled by default) |
In CentOS, dovremo dire a SELinux di consentire a MariaDB di ascoltare su una porta non standard (20500) prima di riavviare il servizio:
# yum install policycoreutils-python # semanage port -a -t mysqld_port_t -p tcp 20500
Quindi riavviare il servizio MariaDB.
Regolazione delle prestazioni di MariaDB
Per aiutarci a controllare e ottimizzare la configurazione secondo le nostre esigenze specifiche, possiamo installare mysqltuner (uno script che fornirà suggerimenti per migliorare le prestazioni del nostro server di database e aumentarne la stabilità):
# wget https://github.com/major/MySQLTuner-perl/tarball/master # tar xzf master
Successivamente cambiare directory nella cartella estratta dall’archivio tar (la versione esatta potrebbe essere diversa nel vostro caso):
# cd major-MySQLTuner-perl-7dabf27
e eseguirlo (vi verrà chiesto di inserire le credenziali del vostro account amministrativo MariaDB)
# ./mysqltuner.pl
Il risultato dello script è di per sé molto interessante, ma passiamo al fondo dove sono elencate le variabili da regolare con il valore consigliato:

La configurazione query_cache_type
indica se la cache delle query è disabilitata (0) o abilitata (1). In questo caso, mysqltuner ci consiglia di disabilitarla.
Quindi perché ci viene consigliato di disattivarla ora? Il motivo è che la cache delle query è utile principalmente in scenari ad alta lettura / bassa scrittura (che non è il nostro caso, dato che abbiamo appena installato il server di database).
AVVERTENZA: Prima di apportare modifiche alla configurazione di un server in produzione, vi incoraggiamo vivamente a consultare un esperto amministratore di database per garantire che una raccomandazione data da mysqltuner non influisca negativamente su una impostazione esistente.
Riepilogo
In questo articolo abbiamo spiegato come configurare un server di database MariaDB dopo averlo installato e protetto. Le variabili di configurazione elencate nella tabella sopra sono solo alcune impostazioni che potresti voler considerare mentre prepari il server per l’uso o quando lo ottimizzi in seguito. Fai sempre riferimento alla documentazione ufficiale di MariaDB prima di apportare modifiche o consulta i nostri suggerimenti per ottimizzare le prestazioni di MariaDB:
Non perdere: 15 utili suggerimenti per ottimizzare le prestazioni di MariaDB
Come sempre, non esitare a farci sapere se hai domande o commenti su questo articolo. Ci sono altre impostazioni del server che ti piace utilizzare? Sentiti libero di condividerle con il resto della community utilizzando il modulo di commento qui sotto.
Source:
https://www.tecmint.com/install-secure-performance-tuning-mariadb-database-server/