> Faqs > Solucionar error acceso a base de datos usando Sail Laravel al restaurar un proyecto

Solucionar error acceso a base de datos usando Sail Laravel al restaurar un proyecto

Se presenta un problema de acceso a la base de datos MariaDB (aunque pasaría también con MySQL) después de restaurar un proyecto en el que se usa Laravel Sail como entorno de desarrollo.

El error que aparece es el siguiente:

SQLSTATE[HY000] [1045] Access denied for user 'sail'@'172.29.0.5' (using password: YES) (SQL: select * from `users` where `email` = x@example.com limit 1)

Este proyecto se acaba de clonar con Git y se ha lanzado el comando "sail up" (./vendor/bin/sail up) para arrancarlo.

Ver solución más abajo...

Respuestas

El problema en mi caso se ha presentado porque, cuando se inició Sail por primera vez, no existía el archivo .env. No me acordé de crearlo según hice el clonado.

Por culpa de eso, la base de datos se ha creado con datos de usuario y contraseña que no corresponden con los que se intenta acceder cuando se incorporó más tarde el .env.

Primero muy importante, cuando cambias el archivo .env con los datos de la base de datos, necesitas borrar los volúmenes creados del contenedor de la base de datos, para que se puedan crear de nuevo las bases de datos con los datos del .env nuevos.

sail down -v

Luego podrás volver a arrancar los contenedores y se volverán a crear las bases de datos con los datos actualizados del .env.

sail up

Por supuesto, una vez has borrado los volúmenes de los contenedores, tendrás que volver a crear las tablas de la base de datos.

sail php artisan migrate

Y otro detalle que quiero señalar por si puede ser un problema para otras personas, aunque en mi caso no era este, es que cuando trabajas con Laravel Sail y cambias algún detalle del archivo de configuración de Docker, docker-compose.yml, debes ejecutar el build de las imágenes de los contenedores.

sail build --no-cache

Así se realiza el rebuild evitando que te pille cosas de la caché por lo que las imágenes estarán actualizadas y con los datos del docker-compose.yml. Luego puedes volver a arracar Sail ya con las imágenes frescas.

Miguel Angel
2507 118 167 8