mysql - 使用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.
请协助。我无法理解可能是什么问题,因为它以前工作正常。
先感谢您。
解决方案
你声称“它以前工作得很好”。这期间发生了什么?
您可以做的检查是确定一个进程是否正在侦听端口 3306:
netstat -lanp | grep :3306
- 如果输出为空,请返回并检查您的容器,因为该端口上没有任何内容正在侦听。
- 如果输出包含 127.0.0.1 或“任何 IP 通配符”,请再次尝试连接
- 如果连接包含不是 127.0.0.1 的特定 IP,请使用该 IP 进行连接。
您可能还想检查您在容器内运行的 mariadb 版本和容器外的 mariadb 客户端版本是否兼容。
推荐阅读
- aem - AEM CURL - 需要在查询的 JSON 响应中显示的特定属性和值而不知道值
- python - Python 数值计算雅可比行列式
- html - HTML引导表单字段对齐
- node.js - 如何在 Google 图片 URL 图表中将条形图值缩放到 100 以上
- apache-superset - 配置 Apache Webserver 以运行 Apache Superset
- node.js - 回调 NodeJS
- react-native - FlatList 滚动在 ScrollView 中不起作用
- javascript - 遍历mongodb中的数组文档
- python - 为什么 xlwings 禁止记录到文件
- c++ - QGraphicsItem::ItemPositionHasChanged 问题