Capítulo 3 de 5

Instalar MariaDB y phpMyAdmin en Debian 13 para Laravel

verificado el 2 septiembre 2026 · 4 min

Respuesta rápida

sudo apt install mariadb-server y después sudo mariadb-secure-installation (el antiguo mysql_secure_installation ya no existe). Crea una base de datos en utf8mb4 y un usuario dedicado limitado a esa base, nunca la cuenta de administrador. En Laravel, DB_CONNECTION=mysql también vale para MariaDB.

Laravel necesita una base de datos. En Debian, MariaDB es la opción por defecto: es el paquete que trae la distribución y es compatible con el driver MySQL de Laravel. phpMyAdmin viene después, si quieres una interfaz web para inspeccionar tus tablas.

Este capítulo forma parte de la instalación de Laravel en Debian, dentro del itinerario Desarrollo web. Pasos ejecutados en Debian 13 «trixie» con MariaDB 11.8.6 y Laravel 13.30.1, el 2 de septiembre de 2026.

Instalar 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

La cuenta de administrador es accesible desde el shell root de la máquina, sin contraseña. Eso no significa que la instalación sea segura: significa que la seguridad depende por completo del acceso al servidor.

Asegurar la instalación

Debian 13 ofrece la herramienta con su nombre de MariaDB. El antiguo mysql_secure_installation ya no existe:

bash
sudo mariadb-secure-installation

El script hace una serie de preguntas. Respóndelas así:

Pregunta Respuesta Por qué
Switch to unix_socket authentication el administrador se autentica con su cuenta del sistema, no con una contraseña almacenada
Change the root password opcional innecesario si has activado unix_socket
Remove anonymous users permiten conectarse sin identificarse
Disallow root login remotely la administración se hace por SSH, no por el puerto 3306
Remove test database base de datos abierta a escritura para todo el mundo
Reload privilege tables aplica los cambios de inmediato

Crear la base de datos y el usuario de la aplicación

No pongas nunca la aplicación a funcionar con la cuenta de administrador. Crea una base de datos y una cuenta dedicadas:

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;

Hay dos detalles que merecen atención. El juego de caracteres utf8mb4 no es decorativo: es el único que almacena todo Unicode, emojis incluidos. Y el privilegio está restringido a laravel.*, no a *.*: si la aplicación se ve comprometida, las demás bases quedan fuera de su alcance.

Comprueba el resultado:

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`

Conectar 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 también vale para MariaDB: Laravel usa el mismo driver PDO. Vacía la caché de configuración y lanza las migraciones:

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

Que las migraciones pasen es la prueba de que la conexión, los permisos y el juego de caracteres son correctos.

Si la conexión falla

Un error «could not find driver» no viene de MariaDB sino de PHP: falta php-mysql. Compruébalo con php -r 'echo implode(", ", PDO::getAvailableDrivers());', como se explica en el capítulo sobre PHP y sus extensiones, debe mostrar mysql. El paquete php-mysqli no basta, porque Laravel pasa por PDO.

phpMyAdmin, ¿hace falta instalarlo?

phpMyAdmin vuelve a estar en Debian 13, en la versión 5.2.2:

bash
sudo apt install -y phpmyadmin

El asistente propone configurar el servidor web, Apache en el caso más habitual, y crea su propia base de datos de configuración. En una instalación con Apache, la interfaz se sirve después en /phpmyadmin.

Una interfaz de administración expuesta en Internet es un objetivo

La dirección /phpmyadmin se escanea sin descanso. Si la instalas en un servidor público, restringe el acceso por dirección IP o con autenticación HTTP, o no la expongas en absoluto: un túnel SSH te permite llegar a ella desde tu equipo sin abrirla al mundo.

bash
# túnel SSH: phpMyAdmin se queda en el loopback del servidor
ssh -L 8080:127.0.0.1:80 deploy@exemple.com
# y después http://127.0.0.1:8080/phpmyadmin desde tu navegador

Para el uso diario, la línea de comandos basta y evita la pregunta de raíz:

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

php artisan db:show muestra las tablas, su tamaño y el número de filas sin salir del terminal. Muchas veces es todo lo que hace falta.

Hacer copias de seguridad

Una base de datos sin copia de seguridad no es una base de producción. El comando mínimo:

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

--single-transaction evita bloquear las tablas durante el volcado de las tablas InnoDB, lo que permite hacer la copia sin interrumpir el servicio. Pon esa línea en una tarea programada y comprueba de vez en cuando que la restauración funciona de verdad: una copia que nunca se ha restaurado es una hipótesis, no una garantía.

Errores frecuentes

mysql_secure_installation ya no existe En Debian 13 la herramienta se llama mariadb-secure-installation.
Dar ALL PRIVILEGES sobre *.* Si la aplicación se ve comprometida, el atacante accede a todas las bases del servidor. Restringe a laravel.*.
Usar utf8 en lugar de utf8mb4 utf8 no cubre todo Unicode: los emojis y algunos caracteres provocan un error al insertar.
Error «could not find driver» El problema viene de PHP, no de MariaDB: falta php-mysql. php-mysqli no basta, porque Laravel pasa por PDO.
phpMyAdmin expuesto en Internet La dirección /phpmyadmin se escanea sin descanso. Restringe el acceso o pasa por un túnel SSH.
Copia de seguridad nunca restaurada Una copia que nunca se ha restaurado es una hipótesis. Prueba la restauración.
Newsletter

Las nuevas pruebas, tutoriales y proyectos, por correo.

Pruebas reproducibles, código versionado, resultados fechados. Nunca spam.