⚙️ 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 y Laravel configurado para conectarse, debemos crear la base de datos que nuestro proyecto utilizará. Esta base de datos almacenará todas las tablas y datos del sistema, como usuarios, productos, pedidos y demás información relevante.
1️⃣ Acceder al contenedor MySQL
Para crear la base de datos, primero accedemos al contenedor de MySQL dentro de Docker. Ejecuta:
./vendor/bin/sail mysql -u sail -p
Te pedirá la contraseña del usuario sail, que normalmente es password, salvo que la hayas cambiado en tu .env.
2️⃣ Crear la base de datos
Una vez dentro del cliente MySQL, ejecuta el siguiente comando para crear la base de datos que Laravel utilizará:
CREATE DATABASE laravel CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
🔹 laravel es el nombre de la base de datos, que debe coincidir con la variable DB_DATABASE en tu archivo .env.
🔹 El uso de utf8mb4 asegura compatibilidad con todos los caracteres, incluidos emojis.
3️⃣ Verificar que la base de datos se creó correctamente
Para confirmar que la base de datos existe, ejecuta:
SHOW DATABASES;
Deberías ver laravel listado entre las bases de datos disponibles.
4️⃣ Salir del cliente MySQL
Para salir del cliente MySQL, escribe:
exit;
5️⃣ Consejos y buenas prácticas
- Usa nombres de bases de datos claros y relacionados con tu proyecto.
- Mantén las credenciales de acceso en el archivo
.envy nunca las subas a repositorios públicos. - Si trabajas con múltiples entornos (local, producción), crea bases de datos separadas para evitar conflictos.
🟢 Con esto, la base de datos laravel ya está lista y Laravel podrá utilizarla para almacenar información mediante migraciones, modelos y controladores.
0 Comentarios
Si desea contactar comigo, lo puede hacer atravez deste formulario gracias