翻譯|使用教程|編輯:黃竹雯|2019-03-07 09:58:09.000|閱讀 524 次
概述:通常,當(dāng)客戶端需要連接到服務(wù)器時,一般假設(shè)它們可以建立直接連接。現(xiàn)在,由于安全原因或網(wǎng)絡(luò)拓?fù)洌ǔP枰褂么砘蚶@過防火墻。本篇文章介紹了幾種不同的方法來使用UniDAC連接MySQL服務(wù)器。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關(guān)鏈接:
Universal Data Access Components (UniDAC)是一款通用數(shù)據(jù)庫訪問組件,提供了多個數(shù)據(jù)庫的直接訪問,如針對Windows的Delphi,C++Builder, Lazarus (以及 Free Pascal), Mac OS X, iOS,Android,Linux和64和32位的FreeBSD等等。我們將長期的經(jīng)驗集于這個小組件,提供統(tǒng)一的數(shù)據(jù)庫連接訪問(如oracle、微軟SQL等等)。這意味著你可以在你的項目之間輕松地切換不同的數(shù)據(jù)庫,以及創(chuàng)建跨數(shù)據(jù)庫應(yīng)用程序接口。
通常,當(dāng)客戶端需要連接到服務(wù)器時,一般假設(shè)它們可以建立直接連接。現(xiàn)在,由于安全原因或網(wǎng)絡(luò)拓?fù)洌ǔP枰褂么砘蚶@過防火墻。本篇文章介紹了幾種不同的方法來使用UniDAC連接MySQL服務(wù)器。
直接連接到服務(wù)器意味著可以從客戶端訪問服務(wù)器主機,無需額外的路由和轉(zhuǎn)發(fā)。這是最簡單的情況。你需要操作的網(wǎng)絡(luò)設(shè)置只有主機名和端口號。這也是與服務(wù)器通信的最快,最穩(wěn)定的方式。建議你盡可能使用直接連接。
以下代碼顯示了其簡單性:
UniConnection := TUniConnection.Create(self); UniConnection.ProviderName := 'MySQL'; UniConnection.Server := 'localhost'; UniConnection.Port := 3306; UniConnection.Username := 'root'; UniConnection.Password := 'root'; UniConnection.Connect;
有時,客戶端計算機會被防火墻屏蔽,該防火墻不允許你直接在指定端口連接到服務(wù)器。如果防火墻允許HTTP連接,則可以將UniDAC與HTTP隧道軟件一起使用以連接到MySQL服務(wù)器。UniDAC支持基于PHP腳本的HTTP隧道。
Web腳本隧道使用的示例可以是:你具有遠(yuǎn)程網(wǎng)站,并且禁止通過數(shù)據(jù)庫服務(wù)器的端口訪問其數(shù)據(jù)庫。只允許通過HTTP端口80進行訪問,并且你需要從遠(yuǎn)程計算機訪問數(shù)據(jù)庫,就像使用通常的直接連接一樣。
你需要部署tunnel.php腳本,該腳本包含在Web服務(wù)器上的提供程序包中。它允許訪問數(shù)據(jù)庫服務(wù)器以使用HTTP隧道。該腳本必須通過HTTP協(xié)議提供。你可以驗證是否可以使用Web瀏覽器訪問它。該腳本可以在已安裝的提供程序文件夾的HTTP子文件夾中找到, 例如:%Program Files Files%\Devart\UniDac for Delphi X\HTTP\tunnel.php。服務(wù)器的唯一要求是PHP 5支持。
要連接到數(shù)據(jù)庫,你應(yīng)該為通常的直接連接設(shè)置TUniConnection參數(shù),這些參數(shù)將從Web服務(wù)器端建立,協(xié)議指定MySQL選項到mpHttp,并設(shè)置以下特定于HTTP隧道的參數(shù):
特定選項 | 強制性 | 含義 |
HttpUrl | Yes | 隧道PHP腳本的URL。例如,如果腳本位于服務(wù)器根目錄中,則URL可以是以下內(nèi)容:http://localhost/tunnel.php。 |
HttpUsername, HttpPassword | No | 如果對具有腳本的網(wǎng)站文件夾的訪問僅適用于使用用戶名和密碼進行身份驗證的注冊用戶,則設(shè)置此屬性。 |
考慮前一種情況,還有一個復(fù)雜問題。
從客戶端計算機是無法直接訪問HTTP隧道服務(wù)器的。例如,客戶端地址為10.0.0.2,服務(wù)器地址為192.168.0.10,MySQL服務(wù)器偵聽端口3307。客戶端和服務(wù)器處在不同的網(wǎng)絡(luò)中, 因此客戶端只能通過地址10.0.0.1的代理來訪問它,該代理偵聽端口為808。在這種情況下,除了設(shè)置特定Http的選項之外,你還必須設(shè)置代理特定選項,如下所示:
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;
請注意,設(shè)置代理特定選項會自動啟用代理服務(wù)器。
請記住,交通隧道或加密總是會增加CPU使用率和網(wǎng)絡(luò)負(fù)載。建議你盡可能使用直接連接。
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請郵件反饋至chenjj@fc6vip.cn