Capitolo 3 di 5

Installare MariaDB e phpMyAdmin su Debian 13 per Laravel

verificato il 2 Settembre 2026 · 4 min

Risposta rapida

sudo apt install mariadb-server, poi sudo mariadb-secure-installation (il vecchio mysql_secure_installation non esiste più). Crea un database in utf8mb4 e un utente dedicato limitato a quel database, mai l'account amministratore. Lato Laravel, DB_CONNECTION=mysql vale anche per MariaDB.

Laravel ha bisogno di un database. Su Debian MariaDB è la scelta predefinita: è il pacchetto fornito dalla distribuzione, compatibile con il driver MySQL di Laravel. phpMyAdmin viene dopo, se vuoi un’interfaccia web per ispezionare le tue tabelle.

Questo capitolo fa parte dell’installazione di Laravel su Debian, nel percorso Sviluppo web. Passaggi eseguiti su Debian 13 «trixie» con MariaDB 11.8.6 e Laravel 13.30.1, il 2 settembre 2026.

Installare MariaDB

bash
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
mariadb --version
code
mariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnu

L’account amministratore è accessibile dalla shell root della macchina, senza password. Non significa che l’installazione sia sicura: significa che la sicurezza dipende interamente dall’accesso al server.

Mettere in sicurezza l’installazione

Debian 13 fornisce lo strumento con il suo nome MariaDB. Il vecchio mysql_secure_installation non esiste più:

bash
sudo mariadb-secure-installation

Lo script pone una serie di domande. Rispondi così:

Domanda Risposta Perché
Switch to unix_socket authentication sì l’amministratore si autentica con il suo account di sistema, non con una password memorizzata
Change the root password a scelta inutile se hai attivato unix_socket
Remove anonymous users sì permettono di connettersi senza credenziali
Disallow root login remotely sì l’amministrazione si fa in SSH, non sulla porta 3306
Remove test database sì database aperto in scrittura a chiunque
Reload privilege tables sì applica subito le modifiche

Creare il database e l’utente applicativo

Non far mai girare l’applicazione con l’account amministratore. Crea un database e un account dedicati:

bash
sudo mariadb
sql
CREATE DATABASE laravel
  CHARACTER SET utf8mb4
  COLLATE utf8mb4_unicode_ci;

CREATE USER 'laravel'@'localhost' IDENTIFIED BY 'un_mot_de_passe_long';

GRANT ALL PRIVILEGES ON laravel.* TO 'laravel'@'localhost';

FLUSH PRIVILEGES;

Due punti meritano attenzione. Il set di caratteri utf8mb4 non è decorativo: è l’unico che memorizza tutto l’Unicode, emoji comprese. E il privilegio è ristretto a laravel.*, non a *.*: se l’applicazione viene compromessa, gli altri database restano fuori portata.

Controlla il risultato:

sql
SHOW GRANTS FOR 'laravel'@'localhost';
code
GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`

Collegare Laravel

.env
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=un_mot_de_passe_long

DB_CONNECTION=mysql vale anche per MariaDB: Laravel usa lo stesso driver PDO. Svuota la cache di configurazione, poi lancia le migrazioni:

bash
php artisan config:clear
php artisan migrate --force
code
  INFO  Running migrations.

  0001_01_01_000000_create_users_table ......................... 136.15ms DONE
  0001_01_01_000001_create_cache_table .......................... 65.58ms DONE
  0001_01_01_000002_create_jobs_table .......................... 117.52ms DONE

Le migrazioni che passano sono la prova che connessione, permessi e set di caratteri sono corretti.

Se la connessione fallisce

Un errore «could not find driver» non viene da MariaDB ma da PHP: manca php-mysql. Verifica con php -r 'echo implode(", ", PDO::getAvailableDrivers());', come spiegato nel capitolo su PHP e le sue estensioni, che deve mostrare mysql. Il pacchetto php-mysqli non basta, perché Laravel passa da PDO.

phpMyAdmin, e se vale la pena installarlo

phpMyAdmin è di nuovo presente in Debian 13, nella versione 5.2.2:

bash
sudo apt install -y phpmyadmin

L’assistente propone di configurare il server web, Apache nel caso più comune, e crea il proprio database di configurazione. Su un’installazione Apache l’interfaccia viene poi servita sotto /phpmyadmin.

Un’interfaccia di amministrazione esposta su Internet è un bersaglio

L’indirizzo /phpmyadmin viene scansionato di continuo. Se lo installi su un server pubblico, limita l’accesso per indirizzo IP o con un’autenticazione HTTP, oppure non esporlo affatto: un tunnel SSH ti permette di raggiungerlo dalla tua postazione senza aprirlo al mondo.

bash
# tunnel SSH: phpMyAdmin resta sull'interfaccia di loopback del server
ssh -L 8080:127.0.0.1:80 deploy@exemple.com
# poi http://127.0.0.1:8080/phpmyadmin dal tuo browser

Per l’uso quotidiano la riga di comando basta ed evita del tutto la questione:

bash
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinker

php artisan db:show mostra le tabelle, la loro dimensione e il numero di righe senza uscire dal terminale. Spesso è tutto quello che serve.

Fare il backup

Un database senza backup non è un database di produzione. Il comando minimo:

bash
sudo mariadb-dump --single-transaction laravel | gzip > /var/sauvegardes/laravel-$(date +%F).sql.gz

--single-transaction evita di bloccare le tabelle InnoDB durante l’export, quindi il backup non interrompe il servizio. Metti questa riga in un’operazione pianificata e verifica ogni tanto che un ripristino funzioni davvero: un backup mai ripristinato è un’ipotesi, non una garanzia.

Errori frequenti

mysql_secure_installation non esiste più Su Debian 13 lo strumento si chiama mariadb-secure-installation.
Dare ALL PRIVILEGES su *.* Una compromissione dell'applicazione dà accesso a tutti i database del server. Limita a laravel.*.
Usare utf8 invece di utf8mb4 utf8 non copre tutto l'Unicode: le emoji e alcuni caratteri fanno fallire l'inserimento.
Errore «could not find driver» Il problema viene da PHP, non da MariaDB: manca php-mysql. php-mysqli non basta, perché Laravel passa da PDO.
phpMyAdmin esposto su Internet L'indirizzo /phpmyadmin viene scansionato di continuo. Limita l'accesso oppure passa da un tunnel SSH.
Backup mai ripristinato Un backup che non hai mai rigiocato è un'ipotesi. Prova il ripristino.
Newsletter

I nuovi test, tutorial e progetti, via e-mail.

Test riproducibili, codice versionato, risultati datati. Mai spam.