Instalar MariaDB y phpMyAdmin en Debian 13 para Laravel
verificado el 2 septiembre 2026 · 4 min
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
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-gnuLa 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:
sudo mariadb-secure-installationEl script hace una serie de preguntas. Respóndelas así:
| Pregunta | Respuesta | Por qué |
|---|---|---|
| Switch to unix_socket authentication | sí | 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 | sí | permiten conectarse sin identificarse |
| Disallow root login remotely | sí | la administración se hace por SSH, no por el puerto 3306 |
| Remove test database | sí | base de datos abierta a escritura para todo el mundo |
| Reload privilege tables | sí | 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:
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;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:
SHOW GRANTS FOR 'laravel'@'localhost';GRANT USAGE ON *.* TO `laravel`@`localhost` IDENTIFIED BY PASSWORD '*1F48A8…'
GRANT ALL PRIVILEGES ON `laravel`.* TO `laravel`@`localhost`Conectar 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 también vale para MariaDB: Laravel usa el mismo driver PDO. Vacía la caché de configuración y lanza las migraciones:
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 DONEQue las migraciones pasen es la prueba de que la conexión, los permisos y el juego de caracteres son correctos.
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:
sudo apt install -y phpmyadminEl 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.
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.
# 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 navegadorPara el uso diario, la línea de comandos basta y evita la pregunta de raíz:
sudo mariadb laravel -e "SHOW TABLES;"
php artisan db:show
php artisan db:table users
php artisan tinkerphp 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:
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
mariadb-secure-installation.laravel.*.php-mysql. php-mysqli no basta, porque Laravel pasa por PDO.