翻譯|使用教程|編輯:黃竹雯|2019-03-07 09:58:09.000|閱讀 524 次
概述:通常,當客戶端需要連接到服務器時,一般假設它們可以建立直接連接?,F在,由于安全原因或網絡拓撲,通常需要使用代理或繞過防火墻。本篇文章介紹了幾種不同的方法來使用UniDAC連接MySQL服務器。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
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連接,則可以將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隧道服務器的。例如,客戶端地址為10.0.0.2,服務器地址為192.168.0.10,MySQL服務器偵聽端口3307??蛻舳撕头掌魈幵诓煌木W絡中, 因此客戶端只能通過地址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'] := '//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使用率和網絡負載。建議你盡可能使用直接連接。
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn