windows - 错误 2013 (HY000):在“握手:读取初始通信数据包”时失去与 MySQL 服务器的连接,系统错误:11
问题描述
我通过 docker-compose 设置了 2 个单独的堆栈,每个堆栈都是 php + mariadb。第一个有 mariadb 监听 3306 端口:
ports:
- "3306:3306"
我使用 -p 标志build
和up
第二个项目,这样事情就不会混淆:
docker-compose -p project2 build && docker-compose -p project2 up
在第二个项目中,我必须更改 mysql 的侦听端口:
ports:
- "3308:3308"
...否则 docker 守护进程说 3306 已经被占用,我理解这似乎是合乎逻辑的
它给出了以下内容,使用docker ps -a
:
3306/tcp, 0.0.0.0:3308->3308/tcp
我现在的问题是我无法从我的 Windows 主机访问数据库,我收到此错误:
错误 2013 (HY000):在“握手:读取初始通信数据包”时失去与 MySQL 服务器的连接,系统错误:11
我在我的 mariadb2 Dockerfile 中尝试了几件事
- 添加
host.docker.internal
到/etc/hosts.allow - 添加
bind-address=host.docker.internal
(也尝试过 127.0.0.1,也尝试过 0.0.0.0)到/etc/mysql/my.cnf
- 暴露 3308
我也尝试从 3308 端口/TCP 打开防火墙规则
接下来我能做什么?...花了我几个小时来弄清楚如何让事情正常进行...
解决方案
推荐阅读
- java - 如何在 Android Studio 的片段中添加日历?
- c - 如何在 C 语言中使用空格进行行输入
- python - NameError:名称“意思”未定义
- java - 为什么运算符 && 不检查两个条件并终止程序测试
- html - 如何在引导程序 5 中反转手风琴按钮内容
- terraform-provider-aws - 错误:启动源实例时出错:InvalidGroup.NotFound
- react-native - 使用钩子激活设备键盘时如何隐藏元素?
- java - 我正在尝试创建一个简单的 REST 服务来实现 CRUD 操作但是我在执行 DELETE 方法时遇到了这个错误-
- python - 无法使用 Python 类结构/将函数转换为类结构获取队列值
- javascript - 将 dvi 转换为 pdf 而不在 reactJS 的网页中显示