MariaDB i phpMyAdmin na Debianie 13: instalacja pod Laravela
zweryfikowano 2 września 2026 · 4 min
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
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-gnuKonto 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:
sudo mariadb-secure-installationSkrypt 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:
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;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:
SHOW GRANTS FOR 'laravel'@'localhost';GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`Podpięcie Laravela
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 działa również dla MariaDB: Laravel używa tego samego sterownika PDO. Wyczyść pamięć podręczną konfiguracji, a potem uruchom migracje:
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 DONEMigracje, które przechodzą, są dowodem, że połączenie, uprawnienia i zestaw znaków są poprawne.
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:
sudo apt install -y phpmyadminKreator proponuje skonfigurowanie serwera WWW, najczęściej Apache, i zakłada własną bazę konfiguracyjną. Przy instalacji na Apache interfejs jest potem serwowany pod /phpmyadmin.
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.
# 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ądarceDo codziennej pracy wiersz poleceń w zupełności wystarcza i zdejmuje ten dylemat z porządku dnia:
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinkerphp 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:
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
mariadb-secure-installation.laravel.*.php-mysql. php-mysqli nie wystarczy, bo Laravel idzie przez PDO.