Installare MariaDB e phpMyAdmin su Debian 13 per Laravel
verificato il 2 Settembre 2026 · 4 min
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
sudo apt update
sudo apt install -y mariadb-server
sudo systemctl enable --now mariadb
mariadb --versionmariadb from 11.8.6-MariaDB, client 15.2 for debian-linux-gnuL’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ù:
sudo mariadb-secure-installationLo 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:
sudo mariadbCREATE 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:
SHOW GRANTS FOR 'laravel'@'localhost';GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`Collegare Laravel
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=laravel
DB_PASSWORD=un_mot_de_passe_longDB_CONNECTION=mysql vale anche per MariaDB: Laravel usa lo stesso driver PDO. Svuota la cache di configurazione, poi lancia le migrazioni:
php artisan config:clear
php artisan migrate --force 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 DONELe migrazioni che passano sono la prova che connessione, permessi e set di caratteri sono corretti.
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:
sudo apt install -y phpmyadminL’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.
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.
# 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 browserPer l’uso quotidiano la riga di comando basta ed evita del tutto la questione:
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinkerphp 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:
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
mariadb-secure-installation.laravel.*.php-mysql. php-mysqli non basta, perché Laravel passa da PDO.