DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: shz0000
今日帖子: 0
在线用户: 3
导航: 论坛 -> 数据库专区 斑竹:liumazi,waterstone  
作者:
男 xigua163 (西瓜163) ★☆☆☆☆ -
普通会员
2016/1/2 0:43:36
标题:
Delphi能通过SSH登录Linux,连接MYSQL取数么?像Navicat一样 浏览:5918
加入我的收藏
楼主: 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…
作者:
男 jwj76 (禁卫) ▲△△△△ -
普通会员
2023/4/8 10:55:55
13楼: SecureBridge费用很高。在lazarus下有LibSSH2,可以改改在Delphi下用,现在已可以用SFTP了。你可以下载Lazarus-ssh-main,里面有sftp的例子。在libssh2_utils。很好用。但要用到mysql,还没研究。
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2023/4/8 17:18:34
14楼: 端口转发是一个好办法。SSH 的开源免费独立工具很多,任何独立工具只要支持端口转发,你把它运行起来就可以了。

如果要 Delphi 自己的代码直接支持,我搜到一个:

https://en.delphipraxis.net/topic/3118-ssh-library-for-delphi/
----------------------------------------------
-
作者:
男 pcplayer (pcplayer) ★☆☆☆☆ -
普通会员
2023/4/8 17:22:25
15楼: 搜到有人写了个博客,内容就是这里的帖子:

https://www.cnblogs.com/findumars/p/5914810.html
----------------------------------------------
-
作者:
男 powerpcer (大强) ★☆☆☆☆ -
禁用账号
2023/4/8 17:33:04
16楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
呆湾傻冒
作者:
男 xuchuantao (暗黑天使) ★☆☆☆☆ -
普通会员
2023/4/9 21:59:15
17楼: 别挖坟呀
----------------------------------------------
按此在新窗口浏览图片
作者:
男 powerpcer (大强) ★☆☆☆☆ -
禁用账号
2023/4/9 22:15:02
18楼: ……
被禁用帐号,帖子内容自动屏蔽!
……

----------------------------------------------
呆湾傻冒
作者:
男 jwj76 (禁卫) ▲△△△△ -
普通会员
2023/7/14 22:10:12
19楼: 查到一个方法,只在思路。
Lazarus下用LIBSSH2
初始化libssh2库
会话创建
建立TCP连接到外网主机
身份验证
执行SSH操作
返回数据
但好像这种方式只能执行命令行,就是直接用mysql登录并执行Mysql命令。不能用Mysql控件进行操作。
正在研究中,有搞出来的分享一下。
----------------------------------------------
-
作者:
男 jwj76 (禁卫) ▲△△△△ -
普通会员
2023/7/27 16:47:49
20楼: Lazarus下libssh2加TMySQL56Connection,通过SSH主机远程登录mysql的DLL可以用了。还是免费的好用。
----------------------------------------------
-
作者:
男 pidan0723 (小猪) ★☆☆☆☆ -
普通会员
2024/4/25 10:37:15
21楼: 使用SecureBridge我实现了,但使用libssh2端口转发也不报错,但不能用
----------------------------------------------
女人不能惯,越惯越混蛋!
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行33.93555毫秒 RSS