我已成功连接到 VPN,现在我想使用 MySQl Administrator 连接到服务器上的 MySQL 数据库。我不知道在服务器主机地址中输入什么。
服务器上有一个使用 localhost 连接的 PHP 脚本。我如何通过 VPN 找出 localhost 的真实含义?
我问这个问题的方式可能真的很蠢——抱歉。这超出了我的知识范围。
答案1
Alex,localhost 是解析为任何具有连接的机器上的本地环回适配器的名称,其地址是 127.0.0.1 - 因此,如果客户端连接到“localhost”上的服务,这意味着它连接到本地机器上的端口。
服务器还有一个公共地址,该地址分配给“真实”网络适配器,例如 123.123.123.123 - 您和其他人都可以通过此地址访问您的服务器,但只能访问对此适配器开放的端口。出于安全原因,默认情况下,mysql 端口 3306 仅对本地环回适配器 127.0.0.1 开放。
VPN 隧道将在您的本地计算机和服务器之间创建一个虚拟但安全的连接。在这种情况下,您的服务器和本地计算机将具有额外的虚拟网络适配器。假设您的服务器在隧道两端有 10.10.10.1,而您的本地计算机在隧道两端有 10.10.10.2。
如果您从本地计算机 ping 10.10.10.1,服务器应该会响应。(在这种情况下,10.10.10.1 是主机的地址,可以回答您的问题)。但是 mysql 端口可能仍未在此接口上侦听,因为它仅侦听 127.0.0.1 - 您可以在 mysql 服务器设置中更改这一点,但请确保它不会在公共 IP 上侦听。
10.10.10.x 只是一个例子,但是如何找出真实的地址?
在本地计算机和服务器上打开终端窗口。在服务器上输入“ifconfig”,在 Windows 计算机上输入“ipconfig”(拼写 idffers 在第 2 个字符中),计算机会告诉您所有适配器的地址。现在您可以在两台计算机上看到哪一个是附加 vpn 适配器(它们具有相似的地址)。
如果您不想更改服务器的设置,您可以“转发”端口,这是一种不同的技术,可以使用 ssh 或 putty 完成。您必须从本地计算机到服务器建立 ssh 或 putty 连接,并将 IP 127.0.0.1 上的端口 3306 从服务器转发到本地计算机。
如果您使用 putty,请转到 ssh 隧道部分并添加本地端口转发 127.0.0.1:3306 - 如果您使用 ssh,则命令如下:
ssh -l 远程用户名 -L 3306:127.0.0.1:3306 你的.服务器名称.com
在 ssh 或 putty 连接激活后,您必须告诉您的 mysql 管理软件连接到 localhost(因此您将 127.0.0.1 或 localhost 一词作为服务器主机),因为端口已转发,现在出现在您的本地计算机上的 127.0.0.1 上 - 这是 ssh 协议可以执行的端口转发技术的结果。请确保不要同时在本地机器上运行 mysql 服务。
您提到创建隧道时会断开与服务器的连接。这可能是隧道软件的安全限制。但您仍然应该能够使用 mysql 管理工具通过隧道进行连接。
答案2
如果您不知道服务器 IP,如何知道有使用 localhost 的 PHP 脚本?如果您有对服务器的 ftp/ssh/web 访问权限,请使用与用于 ftp/ssh/http 的 IP 相同的 IP 连接到 mysql。
但 mysql 可能仅在本地监听,在这种情况下,您需要使用 ssh 连接到服务器并在本地运行 mysqladmin(或者您可以使用 phpmyadmin 之类的程序)