Mysql SQLSTATE[HY000][2002]连接被拒绝(SQL:select*from information\u schema.tables,其中table\u schema=ms\u api\u shop

Mysql SQLSTATE[HY000][2002]连接被拒绝(SQL:select*from information\u schema.tables,其中table\u schema=ms\u api\u shop,mysql,laravel,docker,lumen,Mysql,Laravel,Docker,Lumen,我正在使用Lumen with Docker创建用于身份验证的简单API。安装LumenPassport后,我无法迁移数据库。我可以使用Dbeaver轻松连接到MySQL数据库。 我已经为同样的目的创建了一个Lumen Docker项目,这是第二个。第一个项目没有问题。此外,我检查了MySQL数据库,ms_api_shop也在那里 错误: 这是我的码头工人 services: nginx: build: context: . dockerfile: dock

我正在使用Lumen with Docker创建用于身份验证的简单API。安装LumenPassport后,我无法迁移数据库。我可以使用Dbeaver轻松连接到MySQL数据库。 我已经为同样的目的创建了一个Lumen Docker项目,这是第二个。第一个项目没有问题。此外,我检查了MySQL数据库,ms_api_shop也在那里

错误:

这是我的码头工人


services:
  nginx:
    build:
      context: .
      dockerfile: docker/Nginx.Dockerfile
    image: nginx
    ports:
      - 8092:80
    depends_on:
      - fpm
    volumes:
      - ./:/var/www/lumen-docker
    links:
      - mysql

  fpm:
    build:
      context: .
      dockerfile: docker/fpm.Dockerfile
    volumes:
      - ./:/var/www/lumen-docker
    depends_on:
      - mysql
    links:
      - mysql


  mysql:
    image: mysql:5.7
    ports:
      - 33006:3306
    environment:
      - MYSQL_ROOT_PASSWORD=
      - MYSQL_DATABASE=ms_api_shop
      - MYSQL_ROOT_USER=
    volumes:
      - mysql-data:/var/lib/mysql
volumes:
  mysql-data:


和环境:

DB_HOST=mysql
DB_PORT=33006
DB_DATABASE=ms_api_shop
DB_USERNAME=
DB_PASSWORD=

在docker文件中,您正在将
33006
容器端口绑定到主机端口的
3306
。如果您想访问MySQL,您应该使用
3306
而不是像在.env中那样使用
33006
我在docker中运行了一个Laravel应用程序,我的docker配置的一部分如下所示:

但是我个人认为他们应该在docker网络中,看看下面我的
docker compose.yml中的最后两行代码:

mysql:
    image: mysql:5.7.29
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    environment:
      MYSQL_DATABASE: homestead
      MYSQL_USER: homestead
      MYSQL_PASSWORD: secret
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    volumes:
      - ./mysql:/var/lib/mysql
    networks:
      - laravel    

据我所知,docker容器在同一网络上时可以相互通信。您似乎还没有在
docker compose
中连接这两个docker。要从容器中获取网络信息,可以使用以下命令

$ docker inspect --format='{{json .NetworkSettings.Networks}}'  <docker_container_name>
第二,将容器连接到网络

$ docker network connect my-net <docker_container_name>
$docker网络连接我的网络

不要忘记将这两个容器连接到网络。

我尝试了,但仍然出现了相同的错误:(关闭容器并重新构建),我已经做了,我已经花了4个多小时,甚至删除了项目并重新创建,但没有任何帮助(你可以发布你的整个
docker compose.yml
.env
文件内容吗?或者可以共享到git repo的链接吗?我完全按照你说的做了,创建了网络流明,将它们与容器连接起来,当我检查时我在那里看到了它。但在迁移时我再次遇到了同样的错误。)(
$ docker network connect my-net <docker_container_name>