Rozdział 3 z 5

MariaDB i phpMyAdmin na Debianie 13: instalacja pod Laravela

zweryfikowano 2 września 2026 · 4 min

Szybka odpowiedź

sudo apt install mariadb-server, a następnie sudo mariadb-secure-installation (dawne mysql_secure_installation już nie istnieje). Załóż bazę w utf8mb4 i osobnego użytkownika z dostępem tylko do niej, nigdy konto administratora. Po stronie Laravela DB_CONNECTION=mysql obowiązuje także dla MariaDB.

Laravel potrzebuje bazy danych. Na Debianie domyślnym wyborem jest MariaDB: to pakiet dostarczany przez dystrybucję, zgodny ze sterownikiem MySQL w Laravelu. phpMyAdmin dochodzi później, jeśli chcesz oglądać tabele przez interfejs webowy.

Ten rozdział należy do instalacji Laravela na Debianie, w ścieżce Programowanie webowe. Kroki wykonane na Debianie 13 „trixie” z MariaDB 11.8.6 i Laravelem 13.30.1, 2 września 2026 roku.

Instalacja 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

Konto administratora jest dostępne z powłoki roota na maszynie, bez hasła. To nie znaczy, że instalacja jest bezpieczna: to znaczy, że całe bezpieczeństwo opiera się na dostępie do serwera.

Zabezpieczenie instalacji

Debian 13 dostarcza to narzędzie pod nazwą MariaDB. Dawne mysql_secure_installation już nie istnieje:

bash
sudo mariadb-secure-installation

Skrypt zadaje serię pytań. Odpowiadaj tak:

Pytanie Odpowiedź Dlaczego
Switch to unix_socket authentication tak administrator uwierzytelnia się kontem systemowym, a nie zapisanym hasłem
Change the root password dowolnie zbędne, jeśli włączyłeś unix_socket
Remove anonymous users tak pozwalają połączyć się bez nazwy użytkownika
Disallow root login remotely tak administrację robi się po SSH, nie na porcie 3306
Remove test database tak baza otwarta do zapisu dla wszystkich
Reload privilege tables tak zmiany wchodzą w życie natychmiast

Baza i użytkownik aplikacyjny

Nigdy nie uruchamiaj aplikacji na koncie administratora. Załóż osobną bazę i osobne konto:

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;

Dwie rzeczy zasługują tu na uwagę. Zestaw znaków utf8mb4 nie jest ozdobnikiem: tylko on przechowuje pełny Unicode, razem z emoji. Uprawnienie jest zaś ograniczone do laravel.*, a nie do *.*: jeśli aplikacja padnie łupem włamania, pozostałe bazy zostaną poza zasięgiem.

Sprawdź wynik:

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`

Podpięcie Laravela

.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 działa również dla MariaDB: Laravel używa tego samego sterownika PDO. Wyczyść pamięć podręczną konfiguracji, a potem uruchom migracje:

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

Migracje, które przechodzą, są dowodem, że połączenie, uprawnienia i zestaw znaków są poprawne.

Jeśli połączenie się nie udaje

Błąd „could not find driver” nie pochodzi od MariaDB, tylko od PHP: brakuje php-mysql. Sprawdź poleceniem php -r 'echo implode(", ", PDO::getAvailableDrivers());', opisanym w rozdziale o PHP i jego rozszerzeniach, musi wypisać mysql. Pakiet php-mysqli nie wystarczy, bo Laravel korzysta z PDO.

phpMyAdmin i pytanie, czy go instalować

phpMyAdmin znów jest obecny w Debianie 13, w wersji 5.2.2:

bash
sudo apt install -y phpmyadmin

Kreator proponuje skonfigurowanie serwera WWW, najczęściej Apache, i zakłada własną bazę konfiguracyjną. Przy instalacji na Apache interfejs jest potem serwowany pod /phpmyadmin.

Panel administracyjny wystawiony do internetu to cel

Adres /phpmyadmin jest skanowany bez przerwy. Jeśli instalujesz go na publicznym serwerze, ogranicz dostęp po adresie IP albo uwierzytelnianiem HTTP, albo nie wystawiaj go wcale: tunel SSH pozwala dostać się do niego z własnej maszyny bez otwierania panelu na świat.

bash
# tunel SSH: phpMyAdmin zostaje na pętli zwrotnej serwera
ssh -L 8080:127.0.0.1:80 deploy@exemple.com
# potem http://127.0.0.1:8080/phpmyadmin w przeglądarce

Do codziennej pracy wiersz poleceń w zupełności wystarcza i zdejmuje ten dylemat z porządku dnia:

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

php artisan db:show pokazuje tabele, ich rozmiar i liczbę wierszy bez wychodzenia z terminala. Najczęściej to wszystko, czego trzeba.

Kopia zapasowa

Baza bez kopii zapasowej nie jest bazą produkcyjną. Minimalne polecenie:

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

--single-transaction pozwala uniknąć blokowania tabel InnoDB na czas eksportu, więc kopię robisz bez przerywania pracy serwisu. Wrzuć tę linię do zadania cyklicznego i co jakiś czas sprawdź, czy odtworzenie naprawdę działa: kopia, której nigdy nie odtworzono, jest hipotezą, a nie gwarancją.

Częste błędy

mysql_secure_installation już nie istnieje W Debianie 13 narzędzie nazywa się mariadb-secure-installation.
Nadanie ALL PRIVILEGES na *.* Włamanie do aplikacji otwiera wtedy wszystkie bazy na serwerze. Ogranicz uprawnienia do laravel.*.
Użycie utf8 zamiast utf8mb4 utf8 nie obejmuje całego Unicode: emoji i część znaków kończą się błędem przy zapisie.
Błąd „could not find driver” Problem leży po stronie PHP, nie MariaDB: brakuje php-mysql. php-mysqli nie wystarczy, bo Laravel idzie przez PDO.
phpMyAdmin wystawiony do internetu Adres /phpmyadmin jest skanowany bez przerwy. Ogranicz do niego dostęp albo korzystaj z tunelu SSH.
Kopia zapasowa nigdy nie odtworzona Kopia, której nigdy nie przećwiczono, to hipoteza. Przetestuj odtwarzanie.
Newsletter

Nowe testy, poradniki i projekty — e-mailem.

Powtarzalne testy, wersjonowany kod, datowane wyniki. Nigdy spamu.