【问题标题】:Finding Informix DB Server查找 Informix 数据库服务器
【发布时间】:2014-04-01 13:10:10
【问题描述】:

我有一台服务器,我知道上面安装了Informix,但我不知道是谁安装的。有一个封闭源客户端连接到该服务器,但除了用户名和密码之外,我什么也得不到。我不知道如何连接它,我不知道它的端口号和服务器名称是什么。我已经下载了SQuirreLJDBC Informix 驱动程序。

如何在不知道端口和服务器名称的情况下连接到 JDBC Informix 服务器?

【问题讨论】:

    标签: informix


    【解决方案1】:

    简而言之,您将需要端口号、服务器名称(以及数据库名称)来连接到 Informix。

    假设您有权在安装了 Informix 的机器上四处搜寻,有几个地方可能会找到有关您的 Informix 服务器的详细信息。由于在您的情况下我没有看到有关安装 IDS (Informix) 的平台的任何详细信息,因此我将尝试提供 Unix 和 Windows 平台的信息。但首先,有一点背景:

    设置与 Informix 的连接不需要太多参数。通常,您只需要:

    • 用户名
    • 密码
    • 服务器 IP 地址
    • 端口
    • 服务器名称(Informix 实例的名称)
    • 数据库名称([服务器名称] 上要连接的数据库的名称)

    听起来你需要找出最后三个。

    Linux:

    在 Linux 平台(以及 Windows,我相信)上,有一些环境变量指向您系统上安装 Informix 的位置。其中最重要的是 %INFORMIXDIR%,它指向 Informix 安装的根目录。然而,很多时候,Informix 安装在 /opt 中,因此请尝试在那里。

    在典型安装的 %INFORMIXDIR%/etc 中是一个名为 sqlhosts 的文件(它可能有一个特定服务器实例的后缀,但它会以 sqlhosts 开头)。在这个文件中是服务器名称,可能还有端口号。 %INFORMIXDIR%/etc/sqlhosts 包含以下格式的明文数据:

    ServerName  NetType   HostName   Port/ServicesName
    

    第一个值是您要查找的服务器名称。第四个值 (Port/ServicesName) 是端口号,或者是 /etc/services 中引用端口号的条目的名称。如果您没有看到端口号,请查看 /etc/services

    例如,sqlhosts 可能包含如下内容:

    myservername   onsoctcp   informix.mydomain.com   12345
    

    在这种情况下,您的服务器名称是“myservername”,端口是 12345

    或者,它可能看起来像这样:

    myservername   onsoctcp   informix.mydomain.com   informixservice
    

    在这种情况下,您必须在 /etc/services 中查找显示

    的行
    informixservice     12345/tcp
    

    它会告诉你端口。

    Windows

    警告:我从未处理过安装在 Windows 上的 Informix 服务器,但是根据 IBM 文档,就手头的任务而言,它似乎没有太大的不同。

    而不是文件 %INFORMIXDIR/etc/sqlhosts,您查找的信息包含在注册表项中

    HKEY_LOCAL_MACHINE\SOFTWARE\INFORMIX\SQLHOSTS
    

    使用 regedit.exe 读取存储在此条目中的值。

    如果您在该 reg 键中找不到端口号,则 Windows 等效于 Unix 的 /etc/services 文件是

    C:\Windows\System32\drivers\etc\services
    

    使用文本编辑器检查此文件(记事本可以正常工作)。

    希望这会有所帮助。祝你好运。

    【讨论】:

    • 刚刚注意到我忘记了一些事情:在 sqlhosts 文件中,HostName 条目可以是 IP 地址或主机名。系统管理员通常会使用静态 IP 服务器,例如数据库服务器,因此如果该条目包含 IP 地址而不是名称,请不要感到惊讶。
    【解决方案2】:

    *简答:你不能。*

    这种情况涉及安全问题,因此,数据库不会在您的网络上自行“发布”它,因为每个人都知道它在那里。

    如果您需要在不联系您(您的?)环境管理员的情况下进行发现,则需要使用黑客技术(nmap 实用程序已在此处提供帮助)来发现一些信息(IP、端口),而您仍然缺少诸如 之类的信息服务器名协议,用户名和密码。

    请注意,因为将记录在 Informix 数据库侦听器的连接尝试。

    现在,如果您可以访问数据库所在的服务器,则可以查找 sqlhosts 文件并获取所有这些。

    另一种更合理的选择是向您的 DBA/管理员询问配置,以证明您想要访问的理由。

    【讨论】:

    • 管理员对此一无所知,他们只是与另一家公司签约设置数据库和第三方软件。
    • 好的,在这种情况下,您的公司可能以“root”或“管理员”(windows)身份访问服务器,与他们一起登录,您应该在所有文件夹中搜索“oninit”二进制文件以找到产品文件夹,然后检查“etc”子目录中的“sqlhosts”文件。如果服务器是windows,只需在开始菜单打开setnet32应用程序并检查参数即可。
    【解决方案3】:

    您可以在主机上找到服务器:

    onstat -g dis 
    

    即使服务器离线(或可能退役)也会列出服务器。

    服务器信息在 UNIX/Linux 上的 /INFORMIXTMP 中,我希望在 Windows 中的 C:\ 下有一个类似的文件夹。

    【讨论】:

      【解决方案4】:

      您应该添加有关工作环境的更多信息:您的客户端是什么平台,您的服务器是什么平台,您是否可以访问服务器机器等。

      如果您知道您计算机中的某些内容连接到其他计算机,那么您可以使用netstat 来发现它。如果您在 Linux 上工作,则有 -p 选项显示每个连接的 pid 和应用程序名称。

      首先我们要发现闭源客户端的pid:

      [root@test1 ~]# ps aux | grep my_app
      root     12457  0.0  3.2 3342440 333336 ?      Sl   Mar06  21:01 java -cp /usr/local/bin/my_app...
      

      现在,当我知道 pid 时,我可以使用 netstat:

      [root@test1 ~]# netstat -tnp | grep 12457
      tcp        0      0 ::ffff:169.0.1.71:55850     ::ffff:169.0.1.74:9088      ESTABLISHED 12457/java
      

      从这个输出我可以看到 Infomix 可能在 169.0.1.74 机器的 9088 端口上工作。

      在 Windows 上,您可以使用 SysInternals 的 TCPView 来查看类似的内容。

      在 Windows 上,您还可以检查 ODBC 数据源管理器(32 位和 64 位)以查看是否使用了 Informix 驱动程序。

      【讨论】:

        猜你喜欢
        • 2021-11-09
        • 1970-01-01
        • 2017-04-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多