V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
xiwh
V2EX  ›  分享创造

开发时长一年半,新一代数据库、SSH/SFTP 跨平台桌面 GUI 工具

  •  6
     
  •   xiwh · 12 天前 · 8053 次点击

    开发时长一年半,新一代数据库、SSH/SFTP 跨平台桌面 GUI 工具

    事情的起因大概在 22 年 9 月,脑子里突然冒出来一股强烈的开发一款独立软件的念头,于是开始了这段独立开发之路,起初我只是想做关于数据库方面的功能,后面实现 MySQL SSH 隧道功能时,想到一些自己使用其他 SSH 或 SFTP 工具存在的一些痛点,于是便开了一个新坑:把 SSH/SFTP 功能也集成起来,数据库目前暂时只支持 MySQL 和 MariaDB ,预计在第三季度将 PostgreSQL 、SQLite 、Clickhouse 也集成进来,数据库方面集成优先级是 是否开源>流行度,后续可能还会接入 Redis 、服务器 Docker 管理。
    从 22 年 9 月开始,我一直在利用业余时间开发这款软件(这可能是我坚持时间以及付出精力最多的一个项目了哈哈),中途项目经过了多轮重构(比如说从 Vue2 升级 Vue3 )、性能优化、以及一些基础设施的搭建(插件化、热更新、插件发布持续集成等等),再加上我个人对自己软件有一种完美主义者的心态,页面不好看,交互不友好,页面卡顿,内存占用过大,内存泄漏,Code review 都可能引发我的调整或重构,再加上作为一个程序员对推广方面确实比较排斥,所以耗时 1 年半迟迟没有正式发布并开始推广,这个帖子就是本软件的第一个推广哈哈。
    HexHub 目前应该已经是一个比较可用的状态了,因为我已经在两个月前将 SSH 和 MySQL GUI 切换到 HexHub 了,详细的功能说明我就不写,简单放几张页面截图和功能描述,欢迎大家体验,使用过程中有觉得不好地方一定记得留言我尽力解决。

    预览图

    首页导航页

    暗色主题

    数据库表列表页面:会显示表的一些摘要信息,表列表目前有两个视图类型,当表数量大于 50 时会自动切换成网格模式,能够充分利用空间显示更多的表。然后右边有个空间会实时显示当前数据库的一些指标

    表结构编辑:布局比较类似 Navicat ,不过多了一些小细节,比如说新增/编辑着色、拖拽排序、新增字段根据名称推断类型等等

    SQL 查询:基于 CodeMirror 魔改的,自动完成智能程度我认为 DataGrip > HexHub > DBeaver > Navicat

    表数据编辑:自研的数据表格,做了相当多的优化,实现了新增/编辑作色,撤销、表格批量粘贴、多行编辑、内联编辑、不限制行数,百万甚至千万数据同屏依旧丝滑,几乎可以像 Excel 一样轻松编辑数据,不方便下载的同学可以访问官网有预览 Demo 。

    SSH/SFTP:页面同时包含终端、本地目录、远程目录,远程目录路径能够跟随终端路径发生变化,支持拖拉拽复制/粘贴文件,权限控制等等,使用起来感觉还是相当不错的。

    文件传输:支持 SFTP 、ZMODEM 、SCP 三种文件传输协议,SFTP 使用了并发上传技术、ZMODEM 协议我自己用 Golang 实现了一个(不得不说这个古老的非标准协议要做稳定真的是相当费劲),很大程度解决了很多其他工具会遇到的传输不稳定传输速度慢的问题。

    实时面板:支持网速、CPU 、内存、进程列表、Docker 容器列表、磁盘挂载列表等信息。

    功能表

    基础

    • Windows/Mac/Linux 支持
    • 亮色/暗色双主题
    • 云端资产同步
    • 资产导入导出
    • 多窗口
    • 插件化(按需下载)

    数据库

    • MySQL 支持
    • MariaDB 支持
    • (X)PostgreSQL 支持
    • (X)SQLite 支持
    • (X)Clickhouse 支持
    • SQL 查询编辑器
    • 数据内联编辑
    • 表结构编辑器
    • 视图
    • SSH 隧道
    • 表结构同步
    • 表数据迁移
    • 实时面板
    • 数据字典导出
    • SQL 导入导出
    • XLSX 导入导出

    SSH/SFTP

    • SSH 终端
    • SFTP
    • 跳板机
    • SOCKS5 、HTTP/HTTPS 代理
    • 密码、秘钥、交互式验证登录
    • ZMODEM 协议
    • SCP 协议
    • SFTP 路径联动
    • 本地文件目录视图
    • 远程文件目录视图
    • 文件传输后台任务
    • 文件拖拽上传/下载
    • 文件直接编辑
    • 批量修改文件/文件夹权限

    技术栈:Golang TypeScript Vue3 C++ CEF
    官网:www.hexhub.cn

    最后奉上 5 折折扣码:v2ex, 当然免费版已经足够日常使用,诸位可按需购买。

    第 1 条附言  ·  12 天前
    由于个人失误,导致很多朋友打开页面空白无法使用,特此赠送 1 年会员表达歉意,仅限 25 名,注册账号后输入激活码:v2ex 进行激活
    156 条回复    2024-05-09 13:43:20 +08:00
    1  2  
    luckyv2
        1
    luckyv2  
       12 天前
    免费版本的会话太少了 如果是 5 个左右差不多
    follow
        2
    follow  
       12 天前
    应该对初期尝鲜用户,来一波终身 id ,
    xiwh
        3
    xiwh  
    OP
       12 天前
    @luckyv2 好的,感谢您的建议
    xiwh
        4
    xiwh  
    OP
       12 天前
    @follow 目前免费版处理限制会话数量和多窗口以及资产同步,我的意思是不付费基本使用也没啥问题😁
    follow
        5
    follow  
       12 天前
    默认安装到 C:\Program Files\HexHub 目录下,打开程序后,是空白,https://imgur.com/a/qnmk6Ui
    k9982874
        6
    k9982874  
       12 天前
    我想问问这些把密钥,甚至生产环境密钥放第三方平台托管的运维就真一点不怕火葬场么?
    xiwh
        7
    xiwh  
    OP
       12 天前
    @follow #5 万分感谢,我用一台新电脑测试发现确实有问题
    xiwh
        8
    xiwh  
    OP
       12 天前
    @k9982874 所有资产信息都是使用非对称加密储存到服务器的,私钥都存放在本地(我绕了很多圈来保证服务器无法逆向出明文,因为这些数据对我来说其实也是负担),实在不放心可以使用免费版,免费版不会保存数据到服务器
    leeechsh
        9
    leeechsh  
       12 天前
    UI 交互不错,给 OP 点赞,似乎还不支持 Terminal 自定义字体大小?
    xiwh
        10
    xiwh  
    OP
       12 天前
    @leeechsh 展示不支持,因为懒得做设置页,不过鼠标滚轮可以整体缩放页面
    yangg
        11
    yangg  
       12 天前
    Mac Arm 64 打开空白,而且提示 damaged ,这个常见问题下载页也可以引导一下解决方案
    jiurenmeng
        12
    jiurenmeng  
       12 天前
    建议来个终身给尝新用户
    xiwh
        13
    xiwh  
    OP
       12 天前
    @follow #5
    @yangg 修复了,是 CDN 的限制,我把限制拉高了,重新启动就好了
    xiwh
        14
    xiwh  
    OP
       12 天前
    @follow #5
    @yangg 方便的话可以留一个账号,我送一个会员给您,感谢及时发现问题
    xiaonian233
        15
    xiaonian233  
       12 天前
    会员注册为啥,输入完密码为啥下一步按钮一直是灰色啊,也没有提示
    BigBai
        16
    BigBai  
       12 天前
    体验了一下,很好用,想注册但是下一步按钮不能点击
    xiwh
        17
    xiwh  
    OP
       12 天前
    @BigBai
    @xiaonian233 是不是表单验证没过呢,表单里面输入框为红色就是表单验证未通过(主要是对密码复杂度有要求),后续我把这块交互再优化下
    xiaonian233
        18
    xiaonian233  
       12 天前
    @xiwh 密码已经有数字+大小写+特殊字符了,复杂度应该是够了
    yangg
        19
    yangg  
       12 天前
    @xiwh 邮箱吗:dWVkc2t5QGdtYWlsLmNvbQ==
    xiwh
        20
    xiwh  
    OP
       12 天前
    @xiaonian233 #18 目前密码的验证规则是大于 10 位,必须存在数字 大小写,您看下呢
    morenacl
        21
    morenacl  
       12 天前
    要不要支持一下 Oracle ?
    xiaonian233
        22
    xiaonian233  
       12 天前
    @xiwh 有点奇怪了,注册成功然后登录的时候密码弹错误。我又转去注册页面,密码是正确的。找回密码提示邮箱不存在
    BigBai
        23
    BigBai  
       12 天前
    您好,请问我想连接 SSH,同时连接数据库应该如何操作,好像只有一个操作窗口
    xiaosheng
        24
    xiaosheng  
       12 天前
    提几个建议哈,刚刚注册并领取了一个 1 年会员,感谢 OP ,然后注册过程中有几个小问题
    1. 注册时密码复杂度要求不符时并未在表单中体现,点下一步点不了猜测是这个问题,然后重复操作才可
    2. 注册成功后点击登录,无法登陆,显示用户名和密码不符,感觉有问题所以点击找回密码,去邮箱找回密码时才发现有确认注册的邮件(这一步很奇怪。。) ,个人建议可以先弹窗提示
    3. 左侧选择 SSH 会话和 Mysql 列表的筛选栏,建议可让用户自行选择时候折叠,第一次用的时候就很懵
    xiwh
        25
    xiwh  
    OP
       12 天前
    @BigBai #23 首页选择资产右键可以新窗口打开,或者每个窗口顶部 登录/个人信息 按钮左边有一个按钮可以开新窗口
    xiaosheng
        26
    xiaosheng  
       12 天前
    @xiaonian233 看邮箱,有个确认注册的邮件需要点一下。。。这个注册逻辑有点子小问题的
    xiwh
        27
    xiwh  
    OP
       12 天前
    @xiaosheng 感谢您的建议(对我来说很重要),不过第三点可以详细讲讲吗,我没太明白
    xiwh
        28
    xiwh  
    OP
       12 天前
    @morenacl Oracle 后续可能会支持,不过优先级比较靠后
    xiwh
        29
    xiwh  
    OP
       12 天前
    @yangg #11 1 年激活码已发送至您的邮箱,感谢支持
    caola
        30
    caola  
       12 天前
    刚测试 mariadb 就报 :Error 1054:Unknown column 'sta.EXPRESSION' in 'field list'
    xiwh
        31
    xiwh  
    OP
       12 天前
    @caola 请问新建资产时,选择的是 Mariadb 吗,然后 Mariadb 版本是多少呢
    lizeze
        32
    lizeze  
       12 天前
    插件 db-mysql 启动失败,原因:Network Error
    d460686680
        33
    d460686680  
       12 天前
    能打包成 webui 么?更方便
    xiwh
        34
    xiwh  
    OP
       12 天前
    @lizeze 这是首次下载插件失败了,可能突破了 cdn 的并发限制,重启后再试试呢,等会我把限制调高一点
    SingeeKing
        35
    SingeeKing  
       12 天前
    似乎首次登录时不会发送验证码,必须要等待 60s 重发才会发
    BigBai
        36
    BigBai  
       12 天前
    有点尴尬了,还是不会用,窗口 1 在连接 SSH 的情况下,窗口 2 好像只能连接 SSH,我想窗口 2 使用图形化界面连接数据库 https://imgur.com/undefined
    lizeze
        37
    lizeze  
       12 天前
    @xiwh #34 安装成功了,打开 mysql 数据表就出现这个 [Imgur]( https://imgur.com/yyE8HrK)
    xiwh
        38
    xiwh  
    OP
       12 天前
    @d460686680 主要是数据库, SSH 等连接必须依赖原生环境,不过后续可以考虑出一个 Docker 私有化部署方案
    xiwh
        39
    xiwh  
    OP
       12 天前
    @BigBai #36 您发的图片链接貌似有问题呢,具体操作如下图:
    xiwh
        40
    xiwh  
    OP
       12 天前
    @SingeeKing 收到,晚上回去就改了,感谢您的支持
    xiwh
        41
    xiwh  
    OP
       12 天前
    @lizeze #37 您用的 MySQL 版本是多少呢,新建资产是数据库类型选对了吗
    BigBai
        42
    BigBai  
       12 天前
    @xiwh 原来还要点一下图标,我搞懂了,谢谢
    xiwh
        43
    xiwh  
    OP
       12 天前
    @xiaosheng #26 好的明白了,留下您的邮箱,我再送您一年会员,再次感谢支持
    linauror
        44
    linauror  
       12 天前
    UI 不错,这个是基于 electron 的吗
    andytao
        45
    andytao  
       12 天前
    袋鼠数据库工具 欢迎队友入坑
    https://www.datatable.online/zh/
    xiwh
        46
    xiwh  
    OP
       12 天前
    @linauror 不算是,因为我觉得 electron 太重了,是基于 CEF 开发的,不过都是 chromium 套壳哈哈
    xiwh
        47
    xiwh  
    OP
       12 天前
    @andytao 袋鼠数据库工具也是一款很不错的数据库管理工具 👍
    lizeze
        48
    lizeze  
       12 天前
    @xiwh #41 尴尬 原来是 MariaDB 10.11 。。
    blessingcr
        49
    blessingcr  
       12 天前
    纳闷,注册的时候没有提示密码要求只是标红
    先注册再登录,中间注册的时候的发多了一次验证码以后,登录竟然就提示过于频繁
    到现在还是提示我过于频繁,也没有告诉我多少分钟以后可以重试
    xiwh
        50
    xiwh  
    OP
       12 天前
    @blessingcr 尴尬,这块确实没做好,因为怕被刷,各方面限制做得比较狠,限制我已经解除了
    newte88
        51
    newte88  
       12 天前
    windows 版本,来回拖动窗口后,窗口会变小
    lizeze
        52
    lizeze  
       12 天前
    @xiwh #41 新建资产是数据库类型选对了,还是有这个问题 。MariaDB 10.11 [img][/img]
    hayhong123
        53
    hayhong123  
       12 天前
    支持一下~
    xiwh
        54
    xiwh  
    OP
       12 天前
    @newte88 有复现步骤吗,我这边测试没问题
    newte88
        55
    newte88  
       12 天前
    xiaosheng
        56
    xiaosheng  
       12 天前
    @xiwh aGpzeGlhb3NoZW5nQDE2My5jb20= 感谢 OP
    xiwh
        57
    xiwh  
    OP
       12 天前
    @lizeze #52 好的,晚上我下载一个 MariaDB 10.11 测试一下争取晚上发一版修正
    BeijingBaby
        58
    BeijingBaby  
       12 天前
    ui 不知道是什么字体,感觉有点怪怪的,不够圆润的感觉。
    yanghanlin
        59
    yanghanlin  
       12 天前
    插件:remote-control 启动失败,原因:Network Error
    插件:db-mysql 启动失败,原因:Network Error
    andytao
        60
    andytao  
       12 天前
    你支持了 ZMODEN ,那解决一下跨内、外网的部署问题:
    内外网不允许直连,需要外网发起传输文件需求,然后开发端接收消息并传送文件;

    这个需要 ZMODEN 支持。
    changdy
        61
    changdy  
       12 天前
    建议弃坑...
    sftp 有 winscp
    shell 下有 xshell
    数据库管理工具
    偏向于开发的有 datagrip 偏向于管理的有 navicat ,还有 dbeaver .
    redis 下也有一个非常好用的客户端软件..

    你要想清楚你的优点是什么....(尝试劝人回头...
    lerosua
        62
    lerosua  
       12 天前
    耐得住寂寞与各种挣扎,强~
    follow
        63
    follow  
       12 天前
    @xiwh ZW1haWw6IGd1aG9uZ2p1bkBnbWFpbC5jb20= 谢谢
    carbon
        64
    carbon  
       12 天前
    v2ex 激活码已经用完了,大家还是非常热情的呢
    carbon
        65
    carbon  
       12 天前
    点击“用户协议”和“隐私政策”,显示出来的都是“隐私政策”,不知道是不是 bug 还是尚未完善。
    carbon
        66
    carbon  
       12 天前
    点击 shell 左侧标签,显示“启动失败,是否重新安装”,插件 remote-control 启动失败,原因 network error. 点击确定后进入的页面先是提示重新安装失败...卸载失败原因 network error ,然后转圈圈。返回主页面不知道如何处理,才发现点击 hexhub 图标即可返回主页面,这里如果有提示就好了。另外网络是通的呢,不知道啥原因提示网络不通。
    感觉要再用用看看然后一起发,免得占太多回帖
    zsh2517
        67
    zsh2517  
       12 天前
    官网页面 BUG 好像有点多...官网下载都没下载成,价格也显示不出来...

    不太方便截图,控制台能看到的报错们大概如下

    GET https://hexhub.cn/data-table-sample 404 (Not Found)
    Access to fetch at 'https://api.hexhub.cn/client/plugin/master-latest-version-list' from origin 'https://www.hexhub.cn' has been blocked by CORS policy: The 'Access-Control-Allow-Origin' header has a value 'https://hexhub.cn' that is not equal to the supplied origin. Have the server send the header with a valid value, or, if an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.
    BoJyf_Ru.js:1
    GET https://api.hexhub.cn/client/plugin/master-latest-version-list net::ERR_FAILED 200 (OK)
    Blocked autofocusing on a <div> element in a cross-origin subframe.
    zsh2517
        68
    zsh2517  
       12 天前
    @zsh2517 抱歉,好像是我的问题。有个浏览器插件 Allow CORS 忘了关了(之前遇到过,虽然不知道为啥反而会导致 CORS )
    carbon
        69
    carbon  
       12 天前
    @carbon #66 mysql 页面如果尝试添加服务器的话也会出现网络错误无法启动 db-mysql 的提示,ssh 和数据库都提示无网络。但是注册账号登录账号都正常,尝试下单也能显示收款二维码。
    上两个网络错误:关闭程序,重启后正常了,可顺利安装插件。
    开始菜单中没有程序连接,win10 系统。
    angenin
        70
    angenin  
       12 天前
    如果能自己新增标签页,新标签页能选择链接 SSH 还是 MySQL 就最好了(例如首页显示资源和连接)。目前选了 SSH 或者 MySQL 后,就不能切换到另一种。另外连接后也无法返回到首页,必须关闭软件重新打开。
    BigBai
        71
    BigBai  
       12 天前
    1. 官网下载按钮选择 Windows-arm64 版本下载的是 Mac-arm64 版本的安装包,好像是页面初始化显示问题,点了几次就不显示 windows-arm64 版本了
    2. 数据库导出报错
    ```shell
    开始导出:sys_user
    sql: expected 18 destination arguments in Scan, not 0
    sql: expected 18 destination arguments in Scan, not 0
    sql: expected 18 destination arguments in Scan, not 0
    执行结束
    执行失败:Failed to execute 'showSaveFilePicker' on 'Window': Failed to create or truncate file
    ```
    BigBai
        72
    BigBai  
       12 天前
    @angenin 可以尝试点一下左上角`hexhub`的 logo,应该能解答你的问题
    qbmiller
        73
    qbmiller  
       12 天前
    拿什么开发的 ,3 端客户端?
    SuperXRay
        74
    SuperXRay  
       12 天前
    "Hexhub.app"已损坏,无法打开,选的 Mac ARM 版本,电脑是 m1 芯片
    xurvs
        75
    xurvs  
       12 天前
    @SuperXRay sudo xattr -rd com.apple.quarantine /Applications/HexHub.app
    thinkwei2012
        76
    thinkwei2012  
       12 天前
    连接数据库,将隧道超时 5 改为 30 就 提示:连接已断开, 原因:json: cannot unmarshal string into Go struct field ConnConf.timeout of type uint16
    SuperXRay
        77
    SuperXRay  
       12 天前
    @xurvs 命令确实有用,但是我准备注册账户,填写完资料下一步是灰色的,无法注册啊
    tianzx
        78
    tianzx  
       12 天前
    好像没有买断版是吧?
    Chad0000
        79
    Chad0000  
       12 天前 via iPhone
    @xiwh #8
    正好之前我也想过数据隐私问题,我的方案是我压根儿不访问任何非用户指定的远程资源。用户的数据我使用用户自己的密码加密保存到网盘同步。这样压根儿跟我没一毛钱关系。
    lovegnep
        80
    lovegnep  
       12 天前
    不错,已经下载在用
    Dean
        81
    Dean  
       12 天前
    网站首页选择的 Mac arm64 在 safari chrome 点击下载没有任何反应
    wangwei216
        82
    wangwei216  
       12 天前
    我一个 5 年后端开发,注册了,用了一下,没用明白,果断卸载,浪费时间,有这时间,我命令行都敲几遍了
    xiwh
        83
    xiwh  
    OP
       12 天前
    新版本已发布:
    1.调整了大家都在吐槽的注册页面
    2.顶部栏增加了回主页的按钮,防止新用户不知道点 logo 可以回主页
    3.修复了 mariadb 10.10+兼容性问题
    xiwh
        84
    xiwh  
    OP
       12 天前
    @carbon #66 这个应该是 CDN 限流导致的,我已经限制调高了
    xiwh
        85
    xiwh  
    OP
       12 天前
    @thinkwei2012 修正了,感谢支持
    xiwh
        86
    xiwh  
    OP
       12 天前
    @SuperXRay #77 注册页面设计确实有问题,目前已经修正了
    xiwh
        87
    xiwh  
    OP
       12 天前
    @caola mariadb 高版本兼容性问题已经修正了
    xiwh
        88
    xiwh  
    OP
       12 天前
    @qbmiller 客户端语言主要是 Golang 和 部分 C++,页面还是是 Web 页面,使用 CEF 也就是 Chromium 驱动,但不是 Electron
    xiwh
        89
    xiwh  
    OP
       12 天前
    @BigBai #71 方便把这个表的 ddl 和 dml 脱敏后发给我吗,我这边复现不出来,万分感谢 eGl3ZWloYWkxMjNAZ21haWwuY29t
    xiwh
        90
    xiwh  
    OP
       12 天前
    @Chad0000 这一块我也有类似想法,不过我的计划是使用 Git 仓库来实现配置保存和读取,后期有时间可能会推迟一款这样的插件
    xiwh
        91
    xiwh  
    OP
       12 天前   ❤️ 1
    @tianzx 暂时没有买断版呢,因为现在还在快速迭代期,不好定价
    xiwh
        92
    xiwh  
    OP
       12 天前
    @Dean 我这边测试没问题呢,控制台有报错吗
    aoizz
        93
    aoizz  
       12 天前

    数据导出不知道是不是 BUG
    @xiwh #83
    xiwh
        94
    xiwh  
    OP
       12 天前
    @aoizz 修复了,感谢您的支持
    xiwh
        95
    xiwh  
    OP
       12 天前
    @wangwei216 您使用过程中遇到那些问题呢,是注册流程方面的吗,方便展开讲一下吗
    CL007
        96
    CL007  
       12 天前
    很不错,要是能自定义快捷键,就更好了
    zeusho871
        97
    zeusho871  
       12 天前
    不整个永久版本或者终身更新的嘛 目前比较需要的是 ssh mysql
    操作系统 macos/windows 有安卓肯定更好
    价格都好说 有肯定下单~~
    linyongqianglal
        98
    linyongqianglal  
       12 天前
    @xiwh 为什么不直接支持 webdav 呢,这样省事儿多了也减轻了运营成本
    linyongqianglal
        99
    linyongqianglal  
       12 天前
    数据库功能对比 dbeaver 有什么优势吗
    mayli
        100
    mayli  
       11 天前
    @changdy 小白 allinone 吧。
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1136 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 23:39 · PVG 07:39 · LAX 16:39 · JFK 19:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.