强大的跨数据库访问组件 UniDAC使用教程:网络隧道

Universal Data Access Components (UniDAC)是一款通用数据库访问组件,提供了多个数据库的直接访问,如针对Windows的Delphi,C++Builder, Lazarus (以及 Free Pascal), Mac OS X, iOS,Android,Linux和64和32位的FreeBSD等等。我们将长期的经验集于这个小组件,提供统一的数据库连接访问(如oracle、微软SQL等等)。这意味着你可以在你的项目之间轻松地切换不同的数据库,以及创建跨数据库应用程序接口。

通常,当客户端需要连接到服务器时,一般假设它们可以建立直接连接。现在,由于安全原因或网络拓扑,通常需要使用代理或绕过防火墙。本篇文章介绍了几种不同的方法来使用UniDAC连接MySQL服务器。

直接连接

直接连接到服务器意味着可以从客户端访问服务器主机,无需额外的路由和转发。这是最简单的情况。你需要操作的网络设置只有主机名和端口号。这也是与服务器通信的最快,最稳定的方式。建议你尽可能使用直接连接。

以下代码显示了其简单性:

UniConnection := TUniConnection.Create(self);
UniConnection.ProviderName := 'MySQL';
UniConnection.Server := 'localhost';
UniConnection.Port := 3306;
UniConnection.Username := 'root';
UniConnection.Password := 'root';
UniConnection.Connect;

通过HTTP隧道连接

有时,客户端计算机会被防火墙屏蔽,该防火墙不允许你直接在指定端口连接到服务器。如果防火墙允许HTTP连接,则可以将UniDAC与HTTP隧道软件一起使用以连接到MySQL服务器。UniDAC支持基于PHP脚本的HTTP隧道。

Web脚本隧道使用的示例可以是:你具有远程网站,并且禁止通过数据库服务器的端口访问其数据库。只允许通过HTTP端口80进行访问,并且你需要从远程计算机访问数据库,就像使用通常的直接连接一样。

你需要部署tunnel.php脚本,该脚本包含在Web服务器上的提供程序包中。它允许访问数据库服务器以使用HTTP隧道。该脚本必须通过HTTP协议提供。你可以验证是否可以使用Web浏览器访问它。该脚本可以在已安装的提供程序文件夹的HTTP子文件夹中找到, 例如:%Program Files Files%\Devart\UniDac for Delphi X\HTTP\tunnel.php。服务器的唯一要求是PHP 5支持。

要连接到数据库,你应该为通常的直接连接设置TUniConnection参数,这些参数将从Web服务器端建立,协议指定MySQL选项到mpHttp,并设置以下特定于HTTP隧道的参数:

特定选项 强制性 含义
HttpUrl Yes 隧道PHP脚本的URL。例如,如果脚本位于服务器根目录中,则URL可以是以下内容:http://localhost/tunnel.php。
HttpUsername, HttpPassword No 如果对具有脚本的网站文件夹的访问仅适用于使用用户名和密码进行身份验证的注册用户,则设置此属性。

通过代理和HTTP隧道连接

考虑前一种情况,还有一个复杂问题。

扫描二维码关注公众号,回复: 5464434 查看本文章

从客户端计算机是无法直接访问HTTP隧道服务器的。例如,客户端地址为10.0.0.2,服务器地址为192.168.0.10,MySQL服务器侦听端口3307。客户端和服务器处在不同的网络中, 因此客户端只能通过地址10.0.0.1的代理来访问它,该代理侦听端口为808。在这种情况下,除了设置特定Http的选项之外,你还必须设置代理特定选项,如下所示:

UniConnection := TUniConnection.Create(self);
UniConnection.ProviderName := 'MySQL';
UniConnection.Server := '192.168.0.10';
UniConnection.Port := 3307;
UniConnection.Username := 'root';
UniConnection.Password := 'root';
UniConnection.SpecificOptions.Values['Protocol'] := 'mpHttp';
UniConnection.SpecificOptions.Values['HttpUrl'] := 'http://server/tunnel.php';
UniConnection.SpecificOptions.Values['ProxyHostname'] := '10.0.0.1';
UniConnection.SpecificOptions.Values['ProxyPort'] := '808';
UniConnection.SpecificOptions.Values['ProxyUsername'] := 'ProxyUser';
UniConnection.SpecificOptions.Values['ProxyPassword'] := 'ProxyPassword';
UniConnection.Connect;

请注意,设置代理特定选项会自动启用代理服务器。

附加信息

请记住,交通隧道或加密总是会增加CPU使用率和网络负载。建议你尽可能使用直接连接。

                                                            【下载UniDAC最新版本

猜你喜欢

转载自blog.csdn.net/weixin_43746001/article/details/88287170