首页 > 解决方案 > 使用docker时mysql连接关闭

问题描述

当我尝试使用 docker 连接到 mysql 时遇到问题。

我的 docker-compose 文件

version: '2'
services:
  app:
    build:
      context: ./docker/app
      dockerfile: Dockerfile
    image: ebdaa-m.test.com/app
    volumes:
     - .:/var/www/html
    ports:
     - "80:80"
    networks:
     - sdnet
  node:
    build:
      context: ./docker/node
      dockerfile: Dockerfile
    image: ebdaa-m.test.com/node
    volumes:
     - .:/var/www/html
    networks:
     - sdnet
  mysql:
    image: mariadb:10.5
    ports:
     - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: "root"
      MYSQL_DATABASE: "ecom"
      MYSQL_USER: "root"
      MYSQL_PASSWORD: "root"
    volumes:
     - mysqldata:/var/lib/mysql
    networks:
     - sdnet
  redis:
    image: redis:alpine
    volumes:
     - redisdata:/data
    networks:
     - sdnet
networks:
  sdnet:
    driver: "bridge"
volumes:
  mysqldata:
    driver: "local"
  redisdata:
    driver: "local"

现在,当我撰写此内容时,将创建容器。我的 docker ps -a 命令给了我以下结果

CONTAINER ID   IMAGE                   COMMAND                  CREATED         STATUS                     PORTS                    NAMES
5c925d3610c0   ebdaa-m.test.com/node   "node"                   2 minutes ago   Exited (0) 2 minutes ago                            ebdaa-m-node-1
d001ed99afa4   mariadb:10.5            "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes               0.0.0.0:3306->3306/tcp   ebdaa-m-mysql-1
7f86bd9a006c   ebdaa-m.test.com/app    "/usr/bin/supervisord"   2 minutes ago   Up 2 minutes               0.0.0.0:80->80/tcp       ebdaa-m-app-1
354b5ae00e39   redis:alpine            "docker-entrypoint.s…"   2 minutes ago   Up 2 minutes               6379/tcp                 ebdaa-m-redis-1

现在,当我尝试使用 sequel pro 连接到 mysql 时。我正在传递以下凭据以进行连接

Host: 127.0.0.1
User: root
Password: root
Port: 3306

尝试建立连接时出现以下错误-:

Lost connection to MySQL server at 'reading initial communication packet', system error: 0 (2013)

Double-check the MySQL host and port settings are correct, the server is running, and that no firewall settings are blocking access to the server.

If you are connecting through an SSH tunnel, the MySQL host should be the correct address relative to the machine you're SSHing into. Using, for example, the external IP for the MySQL host rather than the local one can often be a source of problems.

请协助。我无法理解可能是什么问题,因为它以前工作正常。

先感谢您。

标签: mysqllaraveldockerdocker-composemariadb

解决方案


你声称“它以前工作得很好”。这期间发生了什么?

您可以做的检查是确定一个进程是否正在侦听端口 3306:

netstat -lanp | grep :3306
  • 如果输出为空,请返回并检查您的容器,因为该端口上没有任何内容正在侦听。
  • 如果输出包含 127.0.0.1 或“任何 IP 通配符”,请再次尝试连接
  • 如果连接包含不是 127.0.0.1 的特定 IP,请使用该 IP 进行连接。

您可能还想检查您在容器内运行的 mariadb 版本和容器外的 mariadb 客户端版本是否兼容。


推荐阅读