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