netcat用于MySQL连接转发

netcat用于MySQL连接转发,mysql,linux,docker,Mysql,Linux,Docker,这个问题是关于 我试图打开从docker容器到主机的连接,以支持MySQL连接 按照我的理解,我应该能够在我的容器中执行以下内容 nc.traditional -l -p 3306 -c "nc.traditional 172.17.42.1 3306" & mysql --host=127.0.0.1 --port=3306 -uroot -ppassword 打开从Docker容器端口3306到主机(IP 172.17.42.1)MySQL实例的隧道,该实例在端口3306上运行

这个问题是关于

我试图打开从docker容器到主机的连接,以支持MySQL连接

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

nc.traditional -l -p 3306 -c "nc.traditional 172.17.42.1 3306" &
mysql --host=127.0.0.1 --port=3306 -uroot -ppassword
打开从Docker容器端口3306到主机(IP 172.17.42.1)MySQL实例的隧道,该实例在端口3306上运行

问题是我一尝试从容器连接就开始了

nc.traditional -l -p 3306 -c "nc.traditional 172.17.42.1 3306" &
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实例

我一直无法在日志或std上找到任何信息以提供帮助


有什么想法吗?

根据我的经验,你可能在追求socat而不是netcat

乙二醇


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

可能不需要任何隧道。您只需要将MySQL端口3306公开给其他本地端口。也可能是3306。参见