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
-
Installa MariaDB:
sudo apt updatesudo apt install mariadb-server -
Proteggi l'installazione:
sudo mysql_secure_installationSegui 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
- Cambiare la password root? [Y/n] :
Configurazione utente
-
Connettiti a MariaDB:
sudo mysql -
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
-
Testa la connessione con il nuovo utente:
mysql -u your_user -p -
Controlla lo stato del servizio:
sudo systemctl status mariadb
Protezione porta MariaDB
-
Controlla la porta di ascolto corrente:
sudo netstat -tlnp | grep mysql -
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 specificosudo ufw allow from AUTHORIZED_IP to any port 3306 -
Modifica il file di configurazione MariaDB:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfTrova e modifica queste righe:
# Limita l'ascolto solo a localhostbind-address = 127.0.0.1# Oppure specifica un indirizzo IP specifico# bind-address = YOUR_SERVER_IP -
Riavvia MariaDB per applicare le modifiche:
sudo systemctl restart mariadb -
Controlla connessioni autorizzate:
mysql -u root -pSELECT 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.
-
Installa Apache, PHP e le estensioni richieste:
sudo apt updatesudo apt install apache2 php libapache2-mod-php php-mysqli php-mbstring php-zip php-gd php-curl php-xml -
Scarica ed estrai l'archivio ufficiale. Al momento della stesura, l'ultima versione stabile è phpMyAdmin 5.2.3.
Opzione A — archivio .tar.gz:
cd /tmpwget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.tar.gztar xzf phpMyAdmin-5.2.3-all-languages.tar.gzsudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadminOpzione B — archivio .zip:
cd /tmpsudo apt install unzipwget https://files.phpmyadmin.net/phpMyAdmin/5.2.3/phpMyAdmin-5.2.3-all-languages.zipunzip phpMyAdmin-5.2.3-all-languages.zipsudo mv phpMyAdmin-5.2.3-all-languages /usr/share/phpmyadminVerifica l'ultima versioneConsulta la pagina di download ufficiale per ottenere la versione più recente e adatta il numero nei comandi.
-
Crea la cartella temporanea e imposta i permessi:
sudo mkdir -p /usr/share/phpmyadmin/tmpsudo chown -R www-data:www-data /usr/share/phpmyadminsudo chmod 755 /usr/share/phpmyadmin/tmp -
Crea il file di configurazione dall'esempio fornito:
sudo cp /usr/share/phpmyadmin/config.sample.inc.php /usr/share/phpmyadmin/config.inc.phpGenera una stringa segreta (32 caratteri) per la cifratura dei cookie:
openssl rand -base64 24Modifica il file di configurazione:
sudo nano /usr/share/phpmyadmin/config.inc.phpInserisci la stringa segreta e la cartella temporanea:
$cfg['blowfish_secret'] = 'INCOLLA_QUI_LA_STRINGA_GENERATA';$cfg['TempDir'] = '/usr/share/phpmyadmin/tmp'; -
Dichiara phpMyAdmin in Apache:
sudo nano /etc/apache2/conf-available/phpmyadmin.confAggiungi il contenuto seguente:
Alias /phpmyadmin /usr/share/phpmyadmin<Directory /usr/share/phpmyadmin>Options SymLinksIfOwnerMatchDirectoryIndex index.phpRequire all granted</Directory># Nega l'accesso web alle cartelle sensibili<Directory /usr/share/phpmyadmin/tmp>Require all denied</Directory> -
Attiva la configurazione e ricarica Apache:
sudo a2enconf phpmyadminsudo systemctl reload apache2 -
Apri l'interfaccia in un browser, poi accedi con l'utente MariaDB creato in precedenza:
http://indirizzo_ip_o_dominio/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
/phpmyadmincon un percorso meno prevedibile.
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.
-
Scarica e installa MySQL Workbench dal sito ufficiale sul tuo computer.
-
In Workbench, crea una nuova connessione (Database ▸ Manage Connections ▸ New) con il metodo Standard TCP/IP over SSH e inserisci:
Campo Valore SSH Hostname indirizzo_ip_server:22(o la tua porta SSH)SSH Username il tuo utente SSH SSH Key File / Password la tua chiave SSH o password MySQL Hostname 127.0.0.1MySQL Server Port 3306Username l'utente MariaDB (es. your_user)Password la 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. -
Clicca su Test Connection per verificare, poi OK per salvare la connessione.
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.
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