我有一个使用 VMWare 创建的虚拟主机。我不拥有主机,我只能远程连接到虚拟服务器。
我已经安装了 SQL EXPRESS,想使用 SQL Studio 从我的电脑远程连接它。但是 Studio 使用的端口(默认为 1433)已关闭。过去两天我一直在搜索文档,尝试了所有能找到的方法,但都不起作用。
我只是无法打开端口。我猜是因为它是一个虚拟服务器。我只是想向你保证,我已经为 SQL EXPRESS 进行了所有配置,只是端口问题。当我将 telnet localhost 1433 写入 MS-DOS 时,它说它不成功。
有没有办法在虚拟机上打开这个端口?
答案1
你说你试过 NETSTAT,但服务器上没有监听端口 1433;这意味着 SQL Server Express不是接受 TCP/IP 连接,所以显然不会让你从其他机器连接;然后你可以回答“但是我可以在本地连接!”...是的,但这并不一定意味着允许 TCP/IP 连接:在本地连接时,SQL Server 可以通过跳过 TCP/IP 部分来优化连接,并让服务器和客户端应用程序(Management Studio)使用共享内存直接通信。
因此,您应该检查 1) 是否允许 TCP/IP 连接到服务器,以及 2) 是否允许来自远程计算机的 TCP/IP 连接。您可以从 SQL Server 配置管理器验证这两个设置。
答案2
除非它在主机上被阻止,否则它不应该与虚拟服务器有任何关系。
您没有直接说明您尝试从哪里连接(您的机器、VM 自身、互联网 -> 虚拟机……?)但既然您说的是 telnet localhost,我假设 VM 自身。使用 Netstat 命令(例如 netstat -ab 可能有效)查看应用程序是否正在侦听该端口。
如果发现它正在监听端口,您接下来需要确定 NIC 中是否有软件防火墙或配置了某些东西来禁止连接。如果那里没有阻止,您可能需要再三检查 SQL 是否在安全方面配置为允许连接。
答案3
虚拟机永远不会被主机系统上运行的任何防火墙软件阻止;它有自己的(虚拟)网络连接,就是这样:您不需要在主机系统上打开任何东西让虚拟机与网络通信。
你应该检查的是如何VM 已连接到网络。它可能连接到专用子网,并且您和它之间可能有防火墙;或者,由于它在 VMware Server 上运行,它也可能运行在 NAT 虚拟网络,主机充当 VM 网络和外部网络之间的 NAT 路由器。
首先,检查虚拟机的 IP 地址和您尝试连接的计算机的 IP 地址;它们是否在同一个网络上?如果不是,则可能是您和计算机之间存在某些东西阻止了您的连接。您可以使用其他协议(如远程桌面或 Windows 文件共享)连接到虚拟机吗?您可以 ping 虚拟机吗?
顺便说一句,您说您已经检查了所有内容……但是您是否还验证了虚拟机中 Windows 防火墙的配置?此外,您是否启用了与 SQL Server Express 的远程连接,默认情况下没有允许他们吗?
答案4
如果输出中您的端口未处于侦听状态nestat -aon
,则没有进程要求它接受连接。深入了解 MySQL 应用程序。应用程序本身会创建定义以使 TCP 或 UDP 端口处于侦听状态。您可以在 netstat 命令输出的最右侧看到这一点,您将在其中找到与创建该连接相关的 PID(进程 ID)。进程将始终与 TCP/UDP 侦听器相关联。