Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.1K
Vistas
No se puede conectar mysql con laravel (docker)

Soy muy nuevo en laravel y docker y trato de conectar mysql al contenedor php (laravel). Pensé en configurar correctamente mi archivo docker-compose.yml y env en el proyecto laravel.

Además, puedo conectarme a mysql db dentro del contenedor.

Aquí hay un error cuando hice la migración de php artesanal:

 SQLSTATE[HY000] [2002] Connection refused (SQL: select * from information_schema.tables where table_schema = myapp and table_name = migrations and table_type = 'BASE TABLE')

¿Alguien puede saber qué pasó?

docker-compose.yml

 version: '3' services: php: container_name: php build: ./docker/php volumes: - ./myapp/:/var/www nginx: image: nginx:latest container_name: nginx ports: - 80:80 volumes: - ./myapp/:/var/www - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf depends_on: - php db: image: mysql:8.0 container_name: db environment: MYSQL_ROOT_PASSWORD: root1234 MYSQL_DATABASE: myapp MYSQL_USER: docker MYSQL_PASSWORD: docker TZ: 'Asia/Tokyo' command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci ports: - 3306:3306

env

 DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=myapp DB_USERNAME=docker DB_PASSWORD=docker
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

finalmente este problema se soluciona. Cambié .env DB_HOST=127.0.0.1 a DB_HOST=db, ¡entonces funciona!

" DB_HOST= nombre de servicio del contenedor mysql en docker-compose.yml "

esta vez, el nombre de mi contenedor mysql es db, por lo que necesitaba DB_HOST para ser db.

over 4 years ago · Santiago Trujillo Denunciar

0

Está ejecutando mysql 8, hay consideraciones para el mecanismo de autenticación. Intente agregar lo siguiente al comando de su contenedor mysql:

 --default-authentication-plugin=mysql_native_password

MySQL versión 8.0.4 ha cambiado el mecanismo de autenticación predeterminado de mysql_native_password a caching_sha2_password. El problema es que la mayoría de los clientes aún no han implementado la capacidad de autenticación a través de este mecanismo. En el caso de Laravel, esto depende de PHP, y PHP solo comenzó a soportar esto en v7.4.

Personalmente, aún no he intentado configurar esto en uno de mis proyectos, y no estoy seguro de si Laravel admite esto "listo para usar" todavía.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda