ssh隧道不适用于mssql_connect()

时间:2013-03-27 07:44:20

标签: php sql-server

为什么mssql_connect()无法通过隧道连接到mssql数据库。

我为远程服务器创建了隧道,如:

$ssh -L 1433:db_server:1433 user@mid_server

将本地端口1433转发到db_server。我测试了。

然而,当我尝试使用php连接到数据库时,它无法正常工作

mssql_connect("localhost:1433", 'db_user', 'db_password')

详情(已编辑):

  1. db_server:安装sql server的远程数据库服务器。 DB服务器有防火墙。只有mid_server可以连接
  2. mid_server:允许连接db_server
  3. 的中间位置

2 个答案:

答案 0 :(得分:1)

我通过对freetds.conf进行一些更改来修复它。

[global]
    # TDS protocol version
;   tds version = 4.2

[global]
    # TDS protocol version
tds version = 7.0

并重新启动apache。

答案 1 :(得分:0)

我假设您正在从Linux(或MacOS)盒子连接到MSSQL服务器,可能使用freetds连接器。需要检查两件事:如果服务器正在正确监听端口,并且Linux机器上是否正确安装了FreeTDS。由于您可以与其他客户端连接,因此问题应该在FreeTDS上。

确保已安装并正确配置FreeTDS。尝试直接连接到服务器(它应该提示输入密码):

# tsql -S localhost -U db_user

如有必要,请调整freetds.conf上的端口/语言环境/版本信息。有关更多信息: