Skip to main content

Installa e proteggi MariaDB

Questa guida spiega come installare e configurare in modo sicuro MariaDB sul tuo VPS.

Prerequisiti

  • Accesso SSH root o sudo
  • Sistema Debian/Ubuntu aggiornato

Installazione

  1. Installa MariaDB:

    sudo apt update
    sudo apt install mariadb-server
  2. Proteggi l'installazione:

    sudo mysql_secure_installation

    Segui i passaggi di sicurezza:

    • Premi Invio per la password root (vuota per impostazione predefinita)
    • Rispondi alle domande di sicurezza:
      • Cambiare la password root? [Y/n] : Y (consigliato)
      • Rimuovere utenti anonimi? [Y/n] : Y
      • Disabilitare accesso root da remoto? [Y/n] : Y
      • Rimuovere database di test? [Y/n] : Y
      • Ricaricare tabelle privilegi? [Y/n] : Y

Configurazione utente

  1. Connettiti a MariaDB:

    sudo mysql
  2. Crea un nuovo utente amministratore (sostituisci 'your_user' e 'your_password'):

    CREATE USER 'your_user'@'localhost' IDENTIFIED BY 'your_password';
    GRANT ALL PRIVILEGES ON *.* TO 'your_user'@'localhost' WITH GRANT OPTION;
    FLUSH PRIVILEGES;
    EXIT;

Verifica installazione

  1. Testa la connessione con il nuovo utente:

    mysql -u your_user -p
  2. Controlla lo stato del servizio:

    sudo systemctl status mariadb

Protezione porta MariaDB

  1. Controlla la porta di ascolto corrente:

    sudo netstat -tlnp | grep mysql
  2. Configura il firewall (UFW):

    # Blocca accesso predefinito alla porta MySQL (3306)
    sudo ufw deny 3306

    # Se hai bisogno di consentire accesso remoto da un IP specifico
    sudo ufw allow from AUTHORIZED_IP to any port 3306
  3. Modifica il file di configurazione MariaDB:

    sudo nano /etc/mysql/mariadb.conf.d/50-server.cnf

    Trova e modifica queste righe:

    # Limita l'ascolto solo a localhost
    bind-address = 127.0.0.1

    # Oppure specifica un indirizzo IP specifico
    # bind-address = YOUR_SERVER_IP
  4. Riavvia MariaDB per applicare le modifiche:

    sudo systemctl restart mariadb
  5. Controlla connessioni autorizzate:

    mysql -u root -p
    SELECT user, host FROM mysql.user;

Amministrazione grafica del database

Una volta installato MariaDB, due strumenti grafici permettono di gestire i tuoi database senza usare la riga di comando:

  • phpMyAdmin: interfaccia web installata direttamente sul server (con Apache e PHP). Accessibile da un browser, comoda per l'amministrazione quotidiana.
  • MySQL Workbench: applicazione desktop installata sul tuo computer. Si connette al server tramite un tunnel SSH, senza aprire la porta 3306 — coerente con la protezione vista sopra.

phpMyAdmin (interfaccia web tramite archivio .tar.gz / .zip)

Questo metodo installa phpMyAdmin dall'archivio ufficiale (spesso più recente del pacchetto apt), servito da Apache.

  1. Installa Apache, PHP e le estensioni richieste:

    sudo apt update
    sudo apt install apache2 php libapache2-mod-php php-mysqli php-mbstring php-zip php-gd php-curl php-xml
  2. Scarica ed estrai l'archivio ufficiale. Al momento della stesura, l'ultima versione stabile è phpMyAdmin 5.2.3.

    Opzione A — archivio .tar.gz:

    cd /tmp
    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.tar.gz
    tar xzf phpMyAdmin-5.2.3-all-languages.tar.gz
    sudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadmin

    Opzione B — archivio .zip:

    cd /tmp
    sudo apt install unzip
    wget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zip
    unzip phpMyAdmin-5.2.3-all-languages.zip
    sudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadmin
    Verifica l'ultima versione

    Consulta la pagina di download ufficiale per ottenere la versione più recente e adatta il numero nei comandi.

  3. Crea la cartella temporanea e imposta i permessi:

    sudo mkdir -p /usr/share/phpmyadmin/tmp
    sudo chown -R www-data:www-data /usr/share/phpmyadmin
    sudo chmod 755 /usr/share/phpmyadmin/tmp
  4. Crea il file di configurazione dall'esempio fornito:

    sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.php

    Genera una stringa segreta (32 caratteri) per la cifratura dei cookie:

    openssl rand -base64 24

    Modifica il file di configurazione:

    sudo nano /usr/share/phpmyadmin/config.inc.php

    Inserisci la stringa segreta e la cartella temporanea:

    $cfg['blowfish_secret'] = 'INCOLLA_QUI_LA_STRINGA_GENERATA';
    $cfg['TempDir'] = '/usr/share/phpmyadmin/tmp';
  5. Dichiara phpMyAdmin in Apache:

    sudo nano /etc/apache2/conf-available/phpmyadmin.conf

    Aggiungi il contenuto seguente:

    Alias /phpmyadmin /usr/share/phpmyadmin

    <Directory /usr/share/phpmyadmin>
    Options SymLinksIfOwnerMatch
    DirectoryIndex index.php
    Require all granted
    </Directory>

    # Nega l'accesso web alle cartelle sensibili
    <Directory /usr/share/phpmyadmin/tmp>
    Require all denied
    </Directory>
  6. Attiva la configurazione e ricarica Apache:

    sudo a2enconf phpmyadmin
    sudo systemctl reload apache2
  7. Apri l'interfaccia in un browser, poi accedi con l'utente MariaDB creato in precedenza:

    http://indirizzo_ip_o_dominio/phpmyadmin
Proteggi l'accesso a phpMyAdmin

phpMyAdmin è un bersaglio frequente di attacchi automatizzati. È fortemente consigliato:

  • abilitare HTTPS (vedi il suggerimento sotto);
  • limitare l'accesso per IP o aggiungere un'autenticazione Apache (.htaccess);
  • eventualmente sostituire l'alias /phpmyadmin con un percorso meno prevedibile.
Abilitare HTTPS

In produzione, proteggi l'accesso con un certificato SSL Let's Encrypt:

sudo apt install -y certbot python3-certbot-apache
sudo certbot --apache -d il-tuo-dominio.it

Un certificato richiede un nome di dominio che punti all'IP del tuo server — consulta la nostra guida per creare un record A.

MySQL Workbench (client desktop tramite tunnel SSH)

MySQL Workbench si installa sul tuo computer (Windows, macOS o Linux) e si connette al server tramite un tunnel SSH. La porta 3306 resta chiusa sul server e MariaDB continua ad ascoltare solo su 127.0.0.1: la connessione passa attraverso SSH, come se fossi in locale sul server.

  1. Scarica e installa MySQL Workbench dal sito ufficiale sul tuo computer.

  2. In Workbench, crea una nuova connessione (Database ▸ Manage Connections ▸ New) con il metodo Standard TCP/IP over SSH e inserisci:

    CampoValore
    SSH Hostnameindirizzo_ip_server:22 (o la tua porta SSH)
    SSH Usernameil tuo utente SSH
    SSH Key File / Passwordla tua chiave SSH o password
    MySQL Hostname127.0.0.1
    MySQL Server Port3306
    Usernamel'utente MariaDB (es. your_user)
    Passwordla password di questo utente
    Perché 127.0.0.1?

    I campi MySQL Hostname/Port vengono valutati dal server, all'altro capo del tunnel SSH. Si indica quindi 127.0.0.1:3306, cioè MariaDB in ascolto locale sul server.

  3. Clicca su Test Connection per verificare, poi OK per salvare la connessione.

Alternativa — tunnel SSH manuale

Puoi anche aprire il tunnel manualmente, poi puntare qualsiasi client MySQL su 127.0.0.1:3307 in locale:

ssh -L 3307:127.0.0.1:3306 utente@indirizzo_ip_server

Finché la sessione SSH resta aperta, la porta locale 3307 è collegata alla porta 3306 del server.

Compatibilità MariaDB

MySQL Workbench è sviluppato per MySQL. Con le versioni recenti di MariaDB può comparire un avviso di versione «non supportata»: la maggior parte delle operazioni comuni (sfogliare i dati, eseguire SQL, gestire gli utenti) funziona comunque.

Best practices di sicurezza

  • Usa password forti
  • Limita l'accesso al database
  • Esegui backup regolari
  • Aggiorna regolarmente MariaDB
  • Limita connessioni a IP fidati
  • Monitora regolarmente i tentativi di connessione

Risoluzione problemi

  • Controlla i log: sudo tail -f /var/log/mysql/error.log
  • Verifica che il servizio sia attivo: sudo systemctl status mariadb
  • Assicurati che le porte siano aperte: sudo netstat -tulpn | grep mysql