DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: guang2022
今日帖子: 6
在线用户: 1
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 xigua163 (西瓜163) ▲▲▲▲▲ -
注册会员
2016/1/2 0:43:36
标题:
Delphi能通过SSH登录Linux,连接MYSQL取数么?像Navicat一样 浏览:4445
加入我的收藏
楼主: 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

求大侠们指点指点
----------------------------------------------
-不忘初心,方得始终-
作者:
男 nevergrief (孤独骑士) ★☆☆☆☆ -
盒子活跃会员
2016/1/2 5:55:43
1楼: Navicat就是Delphi做的,你说行不行?
----------------------------------------------
只有偏执狂才能生存!
作者:
男 xigua163 (西瓜163) ▲▲▲▲▲ -
注册会员
2016/1/2 9:43:04
2楼: 引用:Navicat就是Delphi做的,你说行不行?

请问大侠,如何实现呢?求指点
----------------------------------------------
-不忘初心,方得始终-
作者:
男 akay (akay) ★☆☆☆☆ -
普通会员
2016/1/2 17:33:27
3楼: 有个heidisql是开源的,可连。
----------------------------------------------
-
作者:
男 xuchuantao (暗黑天使) ▲▲▲▲▲ -
注册会员
2016/1/2 19:30:03
4楼: 可以得使用UniDAC+SecureBridge
----------------------------------------------
按此在新窗口浏览图片
作者:
男 xigua163 (西瓜163) ▲▲▲▲▲ -
注册会员
2016/1/2 21:39:46
5楼: 谢谢 akay (akay),那要慢慢分析heidisql的源代码呀...
----------------------------------------------
-不忘初心,方得始终-
作者:
男 xigua163 (西瓜163) ▲▲▲▲▲ -
注册会员
2016/1/2 21:40:19
6楼: 谢谢 xuchuantao (暗黑天使),能有具体的UniDAC + SecureBridge通过SSH连接MYSQL的例子或文档吗?

SecureBridge 的DEMO只有简单的SSH连接例子,不知道如何结合UniDAC使用呢...
----------------------------------------------
-不忘初心,方得始终-
作者:
男 xigua163 (西瓜163) ▲▲▲▲▲ -
注册会员
2016/1/3 1:41:30
7楼: 谢谢各位大侠,经过2天的摸索,基本把功能实现了。
大部分SSH连接软件都有SSH通道转发功能,就是用这个实现的。

如果Delphi在代码上实现的话,用libSSH 或者 SecureBridge都可以。

代码基本不用帖,思路给大家讲一下吧。

SSH有端口转发(映射)功能,把Linux的MYSQL端口,映射到本机对应的端口后,
然后访问就等于本机安装了MYSQL直接访问了。
----------------------------------------------
-不忘初心,方得始终-
作者:
男 xuchuantao (暗黑天使) ▲▲▲▲▲ -
注册会员
2016/1/3 20:14:58
8楼: 到UniDAC的Demos\TechnologySpecific\SecureBridge 目录里安装好控件.然后添加CRSSHIOHandler控件,再在设置一下unidac的IOHandler就可以使用SecureBridge了.
----------------------------------------------
按此在新窗口浏览图片
作者:
男 xigua163 (西瓜163) ▲▲▲▲▲ -
注册会员
2016/1/4 9:02:53
9楼: To:xuchuantao (暗黑天使)
谢谢,太感谢了!
----------------------------------------------
-不忘初心,方得始终-
作者:
男 xigua163 (西瓜163) ▲▲▲▲▲ -
注册会员
2016/1/5 1:06:27
10楼: 再通过 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
----------------------------------------------
-不忘初心,方得始终-
作者:
男 myzhangyu (请叫我Mr瑜) ▲▲△△△ -
注册会员
2017/8/2 23:16:44
11楼: 大神们能给个demo吗?万分感谢,弄了好几晚上了也不行
----------------------------------------------
就是喜欢研究Delphi…
作者:
男 myzhangyu (请叫我Mr瑜) ▲▲△△△ -
注册会员
2017/8/2 23:29:19
12楼: @xhuchuantao能帮小弟看看吗?
----------------------------------------------
就是喜欢研究Delphi…
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v2.1 版权所有 页面执行37.10938毫秒 RSS