Delphi能通過SSH登錄Linux,連接MYSQL取數么?像Navicat一樣


百度隨時就能搜,你就懶得搜下。
http://tieba.baidu.com/p/671327617

Ssh tunnel通常能實現3種功能
1) 加密網絡傳輸
2) 繞過防火牆
3) 讓位於廣域網的機器連接到局域網內的機器

---------------------------------------------------------------------------------

Delphi能通過SSH登錄Linux,連接MYSQL取數么?

SSH是遠程連接Linux的其中一種通道方式。
目前Linux的MYSQL不允許開放遠程訪問,因此只能SSH登錄Linux后訪問MYSQL。

像Navicat 有參數是SSH通道,填Linux服務器的IP、用戶、密碼,
還有參數填安裝在Linux下的MYSQL IP、用戶、密碼,Navicat能連接上MYSQL取數了

Delphi的組件基本只能直連填MYSQL IP、用戶、密碼,目前找不到相關先通過SSH,再MYSQL連接的資料啊。
不知道用什么方法能在本地通過SSH連接上遠程Linux服務器上的MySQL

求大俠們指點指點

---------------------------------------------------------------------------------

謝謝各位大俠,經過2天的摸索,基本把功能實現了。
大部分SSH連接軟件都有SSH通道轉發功能,就是用這個實現的。

如果Delphi在代碼上實現的話,用libSSH 或者 SecureBridge都可以。

代碼基本不用帖,思路給大家講一下吧。

SSH有端口轉發(映射)功能,把Linux的MYSQL端口,映射到本機對應的端口后,
然后訪問就等於本機安裝了MYSQL直接訪問了。

---------------------------------------------------------------------------------

到UniDAC的Demos\TechnologySpecific\SecureBridge 目錄里安裝好控件.然后添加CRSSHIOHandler控件,再在設置一下unidac的IOHandler就可以使用SecureBridge了

再通過 xuchuantao (暗黑天使) 大俠的指點:
目前可以通過SSH通道端口映射或者

用 UniDac + SecureBridge 實現。

UniDAC的Demos\TechnologySpecific\SecureBridge 還有個CRSSLIOHandler組件要安裝

拖出 SSHClient、SSHChannel、 CRSSLIOHandler、FileStorage 組件
UniConnection IOHandler屬性關聯一下組件 CRSSLIOHandler

再按一般直連方式填入 MySQL連接信息即可

SSHClient組件 HostName(Linux服務器IP)、PassWord(密碼)、Port(端口)、User(Linux 登錄用戶如:ROOT)

然后就全部OK了

當然SSH要KEY才可以的 在SSHClient 的 OnServerKeyValidate 事件加入
var
Key: TScKey;
fp, msg: string;
begin
Key := ScFileStorage.Keys.FindKey(ScSSHClient.HostName);
if (Key = nil) or not Key.Ready then
begin
NewServerKey.GetFingerPrint(haMD5, fp);
NewServerKey.KeyName := ScSSHClient.HostName;
ScFileStorage.Keys.Add(NewServerKey);
Accept := True;
end;
end;

才行,否則運行的時候連接會提示 Host key not verified

然后就可以愉快的連接了,當然MySQL亂碼問題還是要設置一下utf8 和 useunicode

http://bbs.2ccc.com/topic.asp?topicid=504027

http://bbs.2ccc.com/topic.asp?topicid=516086


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM