mysql - netcat 用于 MySQL 连接转发

标签 mysql linux docker

这个问题与

有关

Dockerized web app connecting to MySQL DB on host

我正在尝试打开从 docker 容器到主机的连接以支持 MySQL 连接。

按照我的理解,我应该能够在我的容器中执行以下操作

nc.traditional -l -p 3306 -c "nc.traditional 172.17.42.1 3306" &

打开从 Docker 容器端口 3306 到在端口 3306 上运行的主机(IP 172.17.42.1)MySQL 实例的隧道。

当我尝试从容器连接时就会出现问题

mysql --host=127.0.0.1 --port=3306 -uroot -ppassword

我收到错误并且隧道退出

root@7ec710b77baf:/var/log# mysql --host=127.0.0.1 --port=3306 -uroot -pAcc355
(UNKNOWN) [172.17.42.1] 3306 (mysql) : Connection refused
ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0
[1]+  Exit 1                  nc.traditional -l -p 3306 -c "nc.traditional 172.17.42.1 3306"

为什么隧道会导出?我究竟做错了什么?它确实似乎联系了 MySQL 实例,因为当我尝试不同的端口时,我收到了不同的错误消息。

我无法在日志或标准输出中找到任何帮助信息。

有什么想法吗?

最佳答案

根据我的经验,您可能需要 socat 而不是 netcat。

例如

socat TCP-LISTEN:3306,fork TCP:db-host:3306

我发现 netcat 处理连接存在问题

关于mysql - netcat 用于 MySQL 连接转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30897533/

相关文章:

phpMyAdmin:更改显示的默认行数?

mysql - 检索并移动每组中的最后一条记录

php - MySQL 到 JSON(与 NVD3.js 一起使用)

php - 我怎样才能做出这个 if else 语句,如果文档上传,它将检查图标,但如果没有,它将有一个 x 图标

c sendto函数在linux2.6.29中设置 “network is unreachable” errno

linux - 我想使用 Radius 对用户进行身份验证,但将所有成功的用户放在同一个主目录中,并使用相同的 shell 替换

node.js - 从Docker运行时的NodeJS App 'Module Not Found'

linux - 汇编-如何输入中断并将其保存在寄存器中

c - 使用 fork 在进程的二叉树中进行广度优先搜索

amazon-web-services - 适用于私有(private)容器镜像的 AWS Batch