Hoofdstuk 3 van 5

MariaDB en phpMyAdmin installeren op Debian 13 voor Laravel

geverifieerd op 2 september 2026 · 4 min

Kort antwoord

sudo apt install mariadb-server, daarna sudo mariadb-secure-installation (het oude mysql_secure_installation bestaat niet meer). Maak een database in utf8mb4 en een aparte gebruiker die alleen tot die database toegang heeft, nooit het beheerdersaccount. Aan de Laravel-kant geldt DB_CONNECTION=mysql ook voor MariaDB.

Laravel heeft een database nodig. Op Debian is MariaDB de vanzelfsprekende keuze: het is het pakket dat de distributie meelevert en het werkt met de MySQL-driver van Laravel. phpMyAdmin komt daarna, als je een webinterface wilt om je tabellen te bekijken.

Dit hoofdstuk maakt deel uit van de installatie van Laravel op Debian, binnen het traject Webdevelopment. De stappen zijn uitgevoerd op Debian 13 “trixie” met MariaDB 11.8.6 en Laravel 13.30.1, op 2 september 2026.

MariaDB installeren

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

Het beheerdersaccount is bereikbaar vanuit de rootshell van de machine, zonder wachtwoord. Dat betekent niet dat de installatie veilig is: het betekent dat de beveiliging volledig op de toegang tot de server rust.

De installatie dichttimmeren

Debian 13 levert de tool onder zijn MariaDB-naam. Het oude mysql_secure_installation bestaat niet meer:

bash
sudo mariadb-secure-installation

Het script stelt een reeks vragen. Antwoord zo:

Vraag Antwoord Waarom
Switch to unix_socket authentication ja de beheerder identificeert zich met zijn systeemaccount, niet met een opgeslagen wachtwoord
Change the root password naar keuze overbodig zodra unix_socket aan staat
Remove anonymous users ja daarmee kan iemand verbinden zonder gebruikersnaam
Disallow root login remotely ja beheer doe je via SSH, niet op poort 3306
Remove test database ja een database waar iedereen in mag schrijven
Reload privilege tables ja past de wijzigingen meteen toe

De database en de applicatiegebruiker aanmaken

Laat je applicatie nooit op het beheerdersaccount draaien. Maak een eigen database en een eigen account aan:

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;

Twee punten verdienen aandacht. De tekenset utf8mb4 is geen versiering: het is de enige die de volledige Unicode opslaat, emoji inbegrepen. En de rechten blijven beperkt tot laravel.*, niet *.*: raakt de applicatie gecompromitteerd, dan blijven de andere databases buiten bereik.

Controleer het resultaat:

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`

Laravel aansluiten

.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 geldt ook voor MariaDB: Laravel gebruikt dezelfde PDO-driver. Leeg de configuratiecache en draai daarna de migraties:

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

Migraties die doorlopen zijn het bewijs dat de verbinding, de rechten en de tekenset kloppen.

Als de verbinding mislukt

De fout “could not find driver” komt niet van MariaDB maar van PHP: php-mysql ontbreekt. Controleer het met php -r 'echo implode(", ", PDO::getAvailableDrivers());', zoals uitgelegd in het hoofdstuk over PHP en zijn extensies, daar hoort mysql in de lijst te staan. Het pakket php-mysqli volstaat niet, want Laravel gaat via PDO.

phpMyAdmin, en of je het moet installeren

phpMyAdmin zit weer in Debian 13, in versie 5.2.2:

bash
sudo apt install -y phpmyadmin

De wizard biedt aan om de webserver te configureren, in de meeste gevallen Apache, en maakt zijn eigen configuratiedatabase aan. Op een Apache-installatie wordt de interface daarna geserveerd onder /phpmyadmin.

Een beheersinterface op het open internet is een doelwit

Het adres /phpmyadmin wordt onophoudelijk gescand. Zet je het op een publieke server, beperk de toegang dan op IP-adres of met HTTP-authenticatie, of stel het helemaal niet bloot: via een SSH-tunnel bereik je het vanaf je eigen machine zonder het voor de hele wereld open te zetten.

bash
# SSH-tunnel: phpMyAdmin blijft op de loopback van de server
ssh -L 8080:127.0.0.1:80 deploy@exemple.com
# open daarna http://127.0.0.1:8080/phpmyadmin in je browser

Voor dagelijks gebruik volstaat de commandoregel, en daarmee is de hele vraag van de baan:

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

php artisan db:show toont de tabellen, hun omvang en hun aantal rijen zonder dat je de terminal verlaat. Vaak is dat alles wat je nodig hebt.

Back-ups maken

Een database zonder back-up is geen productiedatabase. Het minimale commando:

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

--single-transaction voorkomt dat de InnoDB-tabellen tijdens de export op slot gaan, zodat je een back-up maakt zonder de dienst te onderbreken. Zet die regel in een geplande taak en controleer af en toe of een restore echt werkt: een back-up die je nooit hebt teruggezet is een aanname, geen garantie.

Veelgemaakte fouten

mysql_secure_installation bestaat niet meer Op Debian 13 heet de tool mariadb-secure-installation.
ALL PRIVILEGES op *.* geven Een gecompromitteerde applicatie geeft dan toegang tot elke database op de server. Beperk het tot laravel.*.
utf8 gebruiken in plaats van utf8mb4 utf8 dekt niet de volledige Unicode: emoji en sommige tekens lopen bij het invoegen op een fout.
Fout “could not find driver” Het probleem zit in PHP, niet in MariaDB: php-mysql ontbreekt. php-mysqli volstaat niet, want Laravel gaat via PDO.
phpMyAdmin bereikbaar vanaf het internet Het adres /phpmyadmin wordt onophoudelijk gescand. Beperk de toegang of werk via een SSH-tunnel.
Back-up die nooit is teruggezet Een back-up die je nooit hebt teruggespeeld is een aanname. Test de restore.
Nieuwsbrief

Nieuwe tests, tutorials en projecten, per e-mail.

Reproduceerbare tests, geversioneerde code, gedateerde resultaten. Nooit spam.