首页 > 代码库 > Delphi能通过SSH登录Linux,连接MYSQL取数么?像Navicat一样
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
Delphi能通过SSH登录Linux,连接MYSQL取数么?像Navicat一样