【发布时间】:2016-01-13 18:35:45
【问题描述】:
我正在尝试在 Vagrantfile 中设置端口转发以从主机系统连接到访客 mysqld,但得到 reading initial communication packet 错误。
主持人:优胜美地,嘉宾:Trusty, vagrant 1.7.4
流浪文件(主机):
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 3309
我的.ini(访客):
bind-address = 127.0.0.1
8080 转发就像一个魅力。
来自客人的mysql -h127.0.0.1 -uroot -p 也有效。
来自主机的mysql -h127.0.0.1 -P 3309 -uroot -p 出现reading initial communication packet 错误。
当我从主机远程登录时,连接立即关闭:
$ telnet localhost 3309
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
当我从主机 ssh 到 vagrant box 时,端口转发工作:
$ssh vagrant@127.0.0.1 -p 2222 -L3308:localhost:3306
然后我可以毫无问题地从主机mysql -h127.0.0.1 -P3308 -uroot -p 连接,我将其用作临时解决方法。
【问题讨论】:
-
你有防火墙规则来阻止这些端口上的流量吗?
-
@FrédéricHenri 不,这是我的第一个嫌疑人。没有单一的 iptable 规则。无论如何,我尝试使用 ssh 进行隧道,它可以正常工作。
-
对,但是通过隧道,您仍然使用 ssh 端口。
-
好吧,即使 ssh 隧道超过 2222,它也应该使用客户机系统上的 3306 连接到 mysqld,并使用主机上的 3309 连接客户机。无论如何,我确认来宾上没有 iptable 规则,并且主机上的防火墙已关闭。
标签: mysql vagrant portforwarding vagrantfile