2

我正在尝试从我的应用程序将运行的 vlan 内的计算机连接到外部 mysql 服务器。远程服务器不是 vlan 的成员。以下是我到目前为止所尝试的。

来自我的 vlan 服务器的 Mysql 端口转发

ssh -L 3306:my-vlan-server-ip:3306 user-at-external-server@external-server-ip

在这种情况下,我会收到一条 ssh 超时消息。尝试直接从我的 php mysql_connect 执行此操作我得到 mysql 错误 #111 但我已经将my.cnf编辑为:

#skip-networking
bind-address  =my-vlan-server-ip

我的 php db 连接脚本

<?php
$conn=mysql_connect("external-server-ip","user","pass");
if($conn)
{
echo "success";
}
else
{
echo "fail";
}
?>

请有人帮忙。让我知道我哪里出错了。谢谢。

4

1 回答 1

1

如果我理解正确,您是在 vlan 服务器 (=my-vlan-server-ip) 上运行 ssh 客户端吗?

本地隧道(-L)基本上将第一个端口转发到给定地址上的给定端口,即 -L 80:someserver:8080 将本地机器上的端口 80 转发到 someserver 上的端口 8080... 所以如果你想连接通过 ssh 到远程服务器上的 3306 你这样做:

ssh -L 3306:external-server-ip:3306 user-at-external-server@external-server-ip (或者只是 -L 3306:localhost:3306,localhost 将指代您正在连接的服务器,即外部服务器 IP)

localhost:3306 然后转发到 external-server-ip:3306

然后在 my-vlan-server-ip 上运行的 php 脚本中连接到 localhost:3306,然后通过 ssh 将其转发到 external-server-ip ...

于 2012-04-18T15:14:38.173 回答