⚙️ Configuración de la Base de Datos y Migraciones Iniciales
En este nuevo paso, aprenderemos a conectar nuestro proyecto Laravel con una base de datos para almacenar información como usuarios, productos, pedidos y más. Laravel utiliza migraciones para crear y mantener las tablas dentro de la base de datos de forma organizada y controlada.
Este proceso es fundamental, ya que una aplicación sin base de datos no puede guardar ni gestionar datos.
Vamos a trabajar tanto la configuración del archivo .env como la ejecución de las migraciones
iniciales que Laravel trae por defecto.
A lo largo de este tema también abordaremos los errores más comunes de conexión con MySQL y sus soluciones, asegurando que tu entorno esté completamente funcional antes de pasar a la creación de modelos y controladores.
📋 Índice de pasos a seguir
- Verificar el servicio MySQL en Docker
- Configurar la conexión en el archivo
.env - Crear la base de datos del proyecto
- Probar la conexión desde Laravel
- Ejecutar las migraciones iniciales
- Solución de errores comunes
Una vez completados estos pasos, tu aplicación estará lista para comenzar a construir las tablas personalizadas del sistema, como las de usuarios, productos o pedidos.
🐬 Paso 11.1: Verificar el servicio MySQL en Docker
Antes de conectar Laravel con la base de datos, debemos asegurarnos de que el contenedor de MySQL
esté ejecutándose correctamente dentro de Docker. Si el servicio MySQL no está activo o presenta errores,
Laravel no podrá establecer conexión y mostrará mensajes como
SQLSTATE[HY000] [2002] Connection refused o
php_network_getaddresses: getaddrinfo failed.
Verificar contenedores activos
Desde tu terminal de Ubuntu (WSL2), ejecuta el siguiente comando para ver los contenedores actualmente en ejecución:
docker ps
Si Docker está funcionando correctamente, deberías ver una salida similar a esta:
CONTAINER ID IMAGE COMMAND STATUS PORTS a8b4c12f3e91 mysql/mysql-server:8.0 "/entrypoint.sh mysq…" Up 2 minutes 0.0.0.0:3306->3306/tcp b2c1a6d9f8e3 sail-8.4/app "start-container" Up 2 minutes 0.0.0.0:80->80/tcp
En este caso, el contenedor mysql/mysql-server:8.0 corresponde al servicio de base de datos.
Si aparece con el estado Up, significa que MySQL está en ejecución y accesible.
Reiniciar el servicio MySQL
Si no aparece ningún contenedor de MySQL o si el estado es Exited, puedes reiniciarlo fácilmente ejecutando:
./vendor/bin/sail up -d
Este comando inicia todos los servicios definidos en el archivo docker-compose.yml,
incluyendo MySQL, Laravel y otros contenedores necesarios.
Verificar estado de salud del contenedor
Una vez iniciado, puedes comprobar si MySQL está “sano” dentro de Docker con el siguiente comando:
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
Si ves algo como (healthy) al final del estado, significa que MySQL está listo para aceptar conexiones.
Errores comunes y soluciones
⚠️ Error 1: “Connection refused”
Ocurre cuando el contenedor MySQL no está en ejecución o aún no ha terminado de inicializarse.
✅ Solución:
- Ejecuta nuevamente
./vendor/bin/sail up -d. - Espera unos segundos antes de intentar reconectar.
⚠️ Error 2: “Temporary failure in name resolution”
Este error indica que Laravel no puede encontrar el host MySQL definido en el archivo .env.
✅ Solución:
- Abre el archivo
.envy asegúrate de queDB_HOSTsea igual amysql(nolocalhost). - Guarda los cambios y reinicia Sail:
./vendor/bin/sail down && ./vendor/bin/sail up -d
⚠️ Error 3: “Access denied for user”
Ocurre si las credenciales de conexión a MySQL no coinciden con las configuradas en el archivo .env.
✅ Solución:
- Verifica que los valores de
DB_DATABASE,DB_USERNAMEyDB_PASSWORDsean correctos. - Si cambiaste las credenciales, recuerda reiniciar Sail.
🟢 Una vez que MySQL esté corriendo correctamente dentro de Docker, podrás continuar con el siguiente paso: Configurar la conexión en el archivo .env.
Paso 11.2: Configurar la Conexión en el Archivo .env
Ahora que el servicio MySQL está funcionando correctamente dentro de Docker,
debemos asegurarnos de que Laravel pueda conectarse a la base de datos.
Para ello, configuraremos las variables de entorno en el archivo .env del proyecto.
🧭 1. Abrir el archivo .env
Desde la terminal, asegúrate de estar dentro del directorio raíz de tu proyecto Laravel y ejecuta el siguiente comando:
cd /mnt/c/proyectos/tiendaonline
nano .env
Esto abrirá el archivo de configuración en el editor nano para que puedas editarlo.
⚙️ 2. Localizar las variables de base de datos
Dentro del archivo, busca el bloque que comienza con DB_:
DB_CONNECTION=mysql
DB_HOST=mysql
DB_PORT=3306
DB_DATABASE=laravel
DB_USERNAME=sail
DB_PASSWORD=password
📌 3. Verificar y ajustar los valores
- DB_CONNECTION: debe ser
mysql. - DB_HOST: el nombre del servicio MySQL definido en Docker, normalmente
mysql. - DB_PORT: el puerto expuesto, por defecto
3306. - DB_DATABASE: el nombre de la base de datos que Laravel usará (por ahora
laravel). - DB_USERNAME: el usuario de conexión, por defecto
sail. - DB_PASSWORD: la contraseña, usualmente
password.
💾 4. Guardar los cambios
Una vez que hayas verificado o modificado los valores, guarda el archivo con:
Ctrl + O → Enter → Ctrl + X
🚀 5. Verificar la conexión
Para comprobar que Laravel puede conectarse a la base de datos, ejecuta:
php artisan migrate:status
Si la conexión es correcta, verás una tabla con el estado de las migraciones.
En caso contrario, revisa los valores del archivo .env o asegúrate de que
el contenedor MySQL esté corriendo correctamente.
✅ Con esto Laravel ya estará listo para comunicarse con la base de datos MySQL.
🗄️ Paso 11.3: Crear la Base de Datos del Proyecto
Ahora que tenemos el servicio MySQL funcionando correctamente con Laravel Sail y el archivo .env configurado,
vamos a crear la base de datos que utilizará nuestro proyecto.
Esta base de datos almacenará todas las tablas y datos del sistema: usuarios, productos, pedidos y más.
1️⃣ Verificar que los contenedores están en ejecución
Antes de acceder a MySQL, asegúrate de que los servicios de Docker y Sail estén activos. Ejecuta el siguiente comando desde la carpeta del proyecto:
./vendor/bin/sail up -d
Si todo está bien, verás mensajes indicando que los contenedores mysql y laravel.test se iniciaron correctamente.
Puedes comprobar su estado con:
./vendor/bin/sail ps
2️⃣ Acceder al contenedor MySQL
Una vez que el contenedor MySQL esté en funcionamiento, accede a él usando el siguiente comando:
./vendor/bin/sail mysql -u sail -p
Te pedirá la contraseña del usuario sail, que por defecto es:
password
3️⃣ Crear la base de datos
Una vez dentro del cliente MySQL (verás el prompt mysql>), ejecuta el siguiente comando para crear la base de datos:
CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔹 laravel es el nombre de la base de datos, y debe coincidir con la variable DB_DATABASE definida en tu archivo .env.
🔹 Usamos utf8mb4 para asegurar compatibilidad con todos los caracteres (incluidos emojis).
4️⃣ Verificar que la base de datos se creó correctamente
Para comprobar que la base de datos existe, ejecuta:
SHOW DATABASES;
Deberías ver laravel listado entre las bases de datos disponibles.
5️⃣ Salir del cliente MySQL
Cuando termines, puedes salir del cliente MySQL escribiendo:
exit;
6️⃣ Consejos y buenas prácticas
- Usa nombres de bases de datos claros y relacionados con tu proyecto.
- Mantén las credenciales en tu archivo
.envy no las subas a repositorios públicos. - Si trabajas con varios entornos (local, pruebas, producción), usa bases de datos diferentes.
🟢 Con esto, la base de datos laravel está lista.
Laravel podrá ahora crear las tablas automáticamente mediante las migraciones y modelos.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias