我有一个带MySQL和Cygwin的远程Windows服务器(启用远程SSH连接)。当我从Workbench的本地实例(即使用Workbench处理隧道)连接时,通过SSH作为root连接,我连接到远程数据库没有问题。
我需要设置自己的隧道,因为我有另一个需要MySQL访问的应用程序。我选择使用Putty,但只获得了部分成功。
我可以通过我的隧道localhost:3307连接(使用Workbench作为测试客户端),我已转发到myremoteserver.no-ip.com:3306,仅当我将远程root用户设置为接受连接时来自所有主机(%),和/或服务器的实际IP。
如果我将root限制为127.0.0.1(应该是这样),我得到错误Host x.x.x.x is not allowed to connect to this MySQL server
,其中x.x.x.x是远程服务器的实际地址!
不知何故,使用Putty制作隧道并不能将我作为本地连接。而是作为远程连接,即使远程IP是远程服务器的IP
我的问题:我如何设置putty来模仿Workbench成功建立隧道连接的方式?
注意:我与远程IP的所有连接都是通过无IP地址。这在Workbench打开隧道时有效。我的服务器也在AWS EC2生态系统中运行。
我当前的Putty连接是no-ip地址,隧道设置为Source:3307, Destination: myremoteserver.no-ip.com:3306, Local and Auto
。
编辑:我还尝试127.0.0.1:3306
作为Putty隧道设置中的目标地址,并得到了相同的结果。
答案 0 :(得分:1)
我当前的Putty连接是no-ip地址和隧道连接 设置来源:3307,目的地:myremoteserver.no-ip.com:3306, 本地和自动。
您希望将mysql的远程实例限制为仅接受localhost接口上的连接,因此您的隧道应转发到远程主机的localhost接口而不是其网络接口。将隧道的目标地址更改为127.0.0.1
,而不是服务器名称。