防火墙MS SQL服务器希望在互联网上向Ubuntu服务器提供数据。
所以我建立了从MS SQL服务器到Ubuntu服务器的SSH隧道,要求Ubuntu将其port 1433
流量发送到MS SQL的port 1433
。
根据this Stack Overflow的回答,我想我应该在MS SQL服务器上这样做:
ssh -R 1433:localhost:1433 ubuntu.example.com
它是一台Windows机器,所以我在PuTTY中做到了这一点:
在本地网络中,我已经测试过使用PHP连接到SQL服务器并且它可以工作。
$server = '192.168.0.12';
$user = 'buttle';
$pass = '1234';
mssql_connect($server,$user,$pass);
现在我想尝试使用SSH隧道而不是"直接"来连接相同的两台机器。连接。所以我将$ server更改为:
$server = 'localhost,1433';
然后我通过PuTTy连接从SQL Server机器到Ubuntu机器的SSH隧道。也许这就是我出错的地方,因为我不知道自己在做什么。
我在Ubuntu机器上收到此PHP错误:
Warning: mssql_connect(): Unable to connect to server: localhost,1433
编辑:
还试过这个:
而且:
[![在MS SQL服务器中指定IP地址的远程IPv4] [5]] [5]
最后,我已经解决了。看到我的回答。
答案 0 :(得分:1)
所有使用PHP mssql
函数的在线教程都假设您在Windows环境中运行PHP。显然,在Windows中,IP和端口号用逗号分隔,但在Linux中用冒号分隔。
// Linux running PHP
$server = 'localhost:1433';
// Windows running PHP
$server = 'localhost,1433';
像往常一样,几个小时的问题归结为一个字节。