ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

aarch64 Linux 离线安装 DBeaver:从 Java 环境到驱动配置的完整落地指南

aarch64 Linux 离线安装 DBeaver:从 Java 环境到驱动配置的完整落地指南 简介这是一份面向 Linux ARM 64 位环境的 DBeaver Community Edition 21.2.5 免 JDK 安装包适用于在 aarch64 架构服务器、开发板或云主机上部署通用数据库客户端。DBeaver 支持 MySQL、PostgreSQL、Oracle、MSSQL 等兼容 JDBC 的数据库可完成查看表结构、执行 SQL 查询与脚本、浏览导出数据、处理 BLOB/CLOB 及修改数据库结构等日常开发运维操作。压缩包共 578 个文件、67.6MB主体为 392 个 jar 运行模块辅以 css/html 界面样式、properties/xml 配置、license 与启动脚本等资源便于快速解压使用。目前已有 945 人学习下载。解压后即可获得一套可直接运行的 ARM64 版 DBeaver 工具目录特别适合在国产化或 ARM 服务器环境中搭建图形化 SQL 开发与数据库管理入口。1. 一个“自带包却要自己带 Java”的 aarch64 安装包到底在解决什么下载 DBeaver 的 Linux 安装包时凡是文件名里带 aarch64 和 nojdk 的都不是拿来就能用的版本它要求这台机器的 CPU 必须是 ARM64并且系统里已经装好 Java。很多人照着 x86 笔记本上的习惯解压、双击结果窗口闪一下就没了。这个包真正解决的是在 aarch64 服务器、迷你主机、国产化办公环境下把一个开源数据库客户端干净地跑起来——不依赖在线安装器也方便在纯内网里分发。dbeaver-ce-21.2.5-linux.gtk.aarch64-nojdk.tar.gz 的典型使用场景是机器不能上公网、软件源也不全但有 JDK 11 或更高版本你希望带一个 tar.gz 过去解压就能用同时想用它连 MySQL、Oracle 这类数据库。它替代的是在 Windows 桌面装 DBeaver 的直觉——把“下载安装包”和“能动”当成两件事。下面按我实际落地时的顺序走一遍先拆文件名再装 JRE、解压、配置 -vm 和 JVM 参数接着处理内网驱动最后是 aarch64 环境下 5 个最常见的排错点。全程命令都以这个 21.2.5 包为准换新版思路也一样。2. 拆开文件名再动手dbeaver-ce、gtk、aarch64、nojdk 分别决定安装的哪一步文件名不是随手起的每个字段都对应一个真实的安装约束。先把它拆明白后面遇到启动报错时就能直接判断是哪一环没满足。2.1 nojdk 是什么为什么这个包需要你先装好 Java 11 而不是打开即用“nojdk”的意思是压缩包里不带 JRE。DBeaver 从社区版到企业版本质都是一个 Java 桌面程序靠 SWT 渲染图形界面没有 Java 运行时它就只是一堆 jar 和可执行脚本。同版本 Linux 包通常会有两个变体一个文件名里带 jre里面塞了完整运行时另一个就是 nojdk要求系统自己提供 Java。21.2.5 这个版本按当时的发布策略aarch64 下常见的是 nojdk也就是说下载 DBeaver 安装包只是第一步还得先确认java -version能不能用、版本是不是 Java 11 及以上。很多人下载后打不开不是包坏了而是系统默认的 Java 还是 8。为什么我要特意强调 Java 11DBeaver 21.x 系列的最低运行要求就是 Java 11低于这个版本启动器会输出类似 UnsupportedClassVersionError然后进程直接退出。你的机器如果是麒麟、统信这类国产 Linux 发行版预装 Java 8 非常常见所以这一步往往是第一个翻车点。另外部分 aarch64 的国产系统把 JDK 装在自定义路径比如/usr/lib/jvm/java-11-openjd-kylin之类java命令在 PATH 里但 JAVA_HOME 可能是空的。DBeaver 启动时找 Java 的顺序一般是启动脚本、JAVA_HOME、PATH顺序不对就会猜错。我的习惯是先定位readlink -f $(which java)拿到真实 JDK 路径再决定要不要在 dbeaver.ini 里写死 -vm省得它乱猜。2.2 gtk 与 aarch64为什么这两个字段最容易在安装时一起翻车linux.gtk 表示这个包是给 Linux 上用 GTK 做界面渲染的版本。DBeaver 底层是基于 Eclipse RCP 的窗口、菜单、对话框都通过 SWT 调用 GTK 库不是纯 Java 画出来的。所以光有 JRE 还不够系统里还得有 GTK 3 的运行库和 X11/Wayland 显示环境。aarch64 则是指令集决定了包里的原生库能不能在目标 CPU 上运行。ldd任何 Java 程序都看不到架构差异但 SWT 的.so文件是编译过的原生代码x86_64 的包放到 aarch64 机器上连加载 SWT 库那一步都会失败。也就是说下载时选错linux.gtk.x86_64后续所有配置都是白做。这两个字段为什么会一起翻车因为很多 aarch64 机器不是普通桌面而是服务器或迷你主机。服务器为了省资源装系统时只选 minimal没有安装 GTK、fontconfig 和 X 服务。你下载的虽然是 linux.gtk 包但环境里根本没有它依赖的 GTK3 和字体启动时要么报 SWT library 加载失败要么报了 JVM 错误但不给任何界面。还有一部分国产 Linux 发行版默认只装 Wayland 合成器老版本 DBeaver 对 Wayland 的兼容不如 X11。遇到这种情况我一般会设GDK_BACKENDx11强制走 X11而不是去硬调 Wayland。2.3 动手前先做三件事确认架构、确认 JRE、确认 GTK3 运行库安装之前不要急着解压。我在这类机器上干活习惯先跑三条命令确认基础环境再决定怎么装uname -m java -version 21 ldconfig -p | grep -o libgtk-3.so[^ ]*第一行看架构。输出 aarch64才说明这个包选对了输出 x86_64 的时候需要重新去官网下载入口找 x86_64 版否则后面每一步都会被带偏。第二行看 Java。注意java -version输出的是运行时版本不看javac。如果是 openjdk version 1.8说明这台机器默认 Java 是 8DBeaver 起不来必须先安装 openjdk-11 或更高版本。第三行看 GTK 运行库。ldconfig -p是查询动态链接库缓存只要能查到libgtk-3.so.0或更高版本说明 GTK3 的运行时在什么都没查出来就要用包管理器补装 gtk3。如果这三条里任何一条不满足都不要继续解压。因为继续下去错误信息会混在一起JRE 版本不对报的是 Java 错误GTK 缺失报的是 SWT 错误最后看起来都是“闪退”但处理方式完全不同。先把环境确认清楚后面至少减掉一半踩坑时间。3. 从解压到跑通在 aarch64 Linux 上完成安装的最小命令与参数说明环境确认没问题后开始安装。这一章以 deb/rpm 系都通用的方式写先把 tar.gz 解压到指定目录再固定 JRE最后用一条命令启动。每步都有对应的验证方式别直接跳到双击。3.1 解压放到 /opt 还是用户目录两种落地的取舍先看 tar.gz 里的顶层结构再解压。常见做法是先用tar -tzf看一眼文件名tar -tzf dbeaver-ce-21.2.5-linux.gtk.aarch64-nojdk.tar.gz | head -5输出一般会有一个顶层目录比如dbeaver/。如果直接tar -xzf到/opt会把目录解成/opt/dbeaver/。为了后续升级和脚本引用方便我习惯用--strip-components1把顶层目录剥掉直接解压到/opt/dbeaversudo mkdir -p /opt/dbeaver sudo tar -xzf dbeaver-ce-21.2.5-linux.gtk.aarch64-nojdk.tar.gz -C /opt/dbeaver --strip-components1 ls -l /opt/dbeaver | head--strip-components1的含义是去掉路径里第一层目录如果包结构是dbeaver/dbeaver两层剥掉一层后会变成/opt/dbeaver/dbeaver这时就把安装目录理解成/opt/dbeaver/dbeaver后续所有DBEAVER_HOME都指向它。所以解压完务必ls看一眼真实结构我在不少脚本里见过因为少看这一步写错路径的。没有 root 权限的机器解压到用户目录一样能跑mkdir -p ~/apps/dbeaver tar -xzf dbeaver-ce-21.2.5-linux.gtk.aarch64-nojdk.tar.gz -C ~/apps/dbeaver --strip-components1区别只在权限和开机自启。/opt适合给 root 统一管理用户目录适合在共享服务器上各装各的。纯内网环境里我反而推荐用户目录方案不需要 sudo解压完把整个目录拷给另一台同架构机器也能用分发成本最低。3.2 用 -vm 固定 JRE没有这步aarch64 机器会去 PATH 里乱猜前面说过DBeaver 的启动器会自己找 Java。如果你的机器上有多个 JDK或者java默认指向的是 Java 8就必须在启动配置里写死 JVM。先确认一个可用的 Java 11 路径ls /usr/lib/jvm/ readlink -f $(which java)Debian/Ubuntu 系装完 openjdk-11-jre 后路径常见是/usr/lib/jvm/java-11-openjdk-arm64/bin/javaRHEL/麒麟系常见是/usr/lib/jvm/java-11-openjdk/bin/java。记下这个绝对路径然后编辑/opt/dbeaver/dbeaver.ini-vm /usr/lib/jvm/java-11-openjdk-arm64/bin/java -vmargs -Xms256m -Xmx2048m -XX:UseG1GC -Dfile.encodingUTF-8-vm这两行必须在-vmargs之前这是一个很隐蔽的坑Eclipse 体系解析参数时一旦读到-vmargs后面的内容全部交给 JVM 处理不会再当成本体参数。很多人把-vm写在文件末尾结果完全不生效。file.encodingUTF-8是为了避免中文表名和注释在部分 locale 下乱码aarch64 的国产系统尤其建议保留。如果系统里只有 Java 17 没有 Java 11也可以直接指向 Java 17 的路径DBeaver 21.2.5 在 Java 17 下能正常运行。真正不能接受的是 Java 8所以判断标准不是“有没有 java”而是“版本有没有到 11”。3.3 启动命令与 JVM 参数第一次图形界面前建议先改的 4 个参数配置完dbeaver.ini先别用桌面图标直接在终端启动能看到完整日志cd /opt/dbeaver ./dbeaver -data /data/dbeaver-workspace-data参数指定工作空间目录。默认工作空间在~/.local/share/DBeaverData但多版本共存时我建议固定到独立目录比如/data/dbeaver-workspace。这个目录存放连接配置、驱动配置和日志升级 DBeaver 时保留它连接就不会丢。第一次启动时JVM 参数里值得重点照顾四个-Xmx控制堆上限默认值在导入大表或同时开多个连接时会偏小2G 起步-Xms控制初始堆内存充足的机器可以设成和 Xmx 一样减少频繁扩容-XX:UseG1GC对 DBeaver 这种交互式 GUI 更友好-Dfile.encodingUTF-8保证中文显示。下面是一条完整的启动命令示例cd /opt/dbeaver ./dbeaver \ -data /data/dbeaver-workspace \ -vm /usr/lib/jvm/java-11-openjdk-arm64/bin/java注意命令里的-vm和 ini 里的-vm功能相同但命令行优先级更高。如果命令行已经传了ini 里就可以不加。我一般只在 ini 里写因为每次启动都敲 JVM 路径太容易失误。3.4 验证这次安装真的成功日志、进程与端口三处确认图形界面弹出来不等于安装成功还要确认进程和工作空间正常。终端里用两条命令验证pgrep -fa dbeaver tail -n 40 /data/dbeaver-workspace/.metadata/.logpgrep -fa能看到完整命令行参数至少有一条.../dbeaver的 Java 进程存在。.metadata/.log是 Eclipse 体系的核心日志如果启动过程中有驱动加载失败、GTK 加载失败都会记录在这里。没有任何界面报错但日志末尾出现Failed to load说明有原生库或扩展点出了问题这时候不要继续建连接先把日志里第一行异常处理掉。如果这台机器是远程服务器只能通过 SSH 转发图形界面那验证方式不同export DISPLAY:0 export GDK_BACKENDx11 ./dbeaverDISPLAY 填的是目标机器上实际运行的 X 服务编号不一定都是 :0。没有本地桌面的纯服务器建议直接关闭图形界面的念头用 DBeaver 的 CLI 或换个客户端工具否则 SSH 断线窗口就卡住了。4. 把驱动在纯内网里落地连接 MySQL 与 Oracle 的离线方案很多 aarch64 机器是纯内网没有公网下载能力。DBeaver 建连接时有一步会自动下载 JDBC 驱动这一步在离线环境里会把新手卡死。好在 DBeaver 的驱动管理是开放的允许手动添加 jar 包。这一章讲清楚驱动文件放在哪、怎么补、连接串怎么填。4.1 驱动仓库到底放哪先找到 DBeaverData 的真实目录DBeaver 第一次启动后会在工作空间旁边创建一个DBeaverData目录驱动默认下载到这个目录下的driver文件夹。先找到它别凭记忆猜find $HOME/.local/share/DBeaverData -maxdepth 2 -type d | sort如果机器上之前用默认工作空间启动过输出里会有drivers、workspace6、.metadata等目录。其中drivers就是驱动仓库MySQL、PostgreSQL、SQLite 这些驱动都会被下载进各自以驱动 ID 命名的子目录。如果你的-data指定到了/data/dbeaver-workspace那么驱动数据不一定在~/.local/share/DBeaverData。DBeaver 的逻辑是工作空间目录用来放元数据驱动数据默认在用户主目录但也可以在首选项里改。纯内网分发时最简单的方式是直接搜find / -maxdepth 6 -type d -name drivers 2/dev/null | grep -i dbeaver离线环境下我能推荐的第一个方案是“整体备份”在一台能联网、架构也相同的机器上用 DBeaver 把所有连接驱动都下载好然后整个drivers目录拷到内网机器同名位置。这个方法对 MySQL、Oracle、PG 都有效因为 JDBC 驱动本身是纯 Java 的不依赖架构。4.2 MySQL 8 驱动离线补齐单个 jar 的复制与驱动设置MySQL 的驱动只有一个主 jar离线补齐最简单。常见做法是手动下载mysql-connector-j-8.0.33.jar放进驱动目录的独立子目录然后在 DBeaver 驱动设置里把它加进去mkdir -p $HOME/.local/share/DBeaverData/driver/offline-mysql cp mysql-connector-j-8.0.33.jar $HOME/.local/share/DBeaverData/driver/offline-mysql/打开 DBeaver进入“数据库 → 驱动管理器”找到 MySQL选择“编辑 → 添加 jar”选中刚刚复制进去的 jar然后点“找到类”。这一步必须操作单纯把 jar 放进目录DBeaver 不会自动识别。点击“找到类”后类名会填成com.mysql.cj.jdbc.Driver保存后重新建连接。注意 MySQL 8 的驱动类名有两个时代旧版驱动用com.mysql.jdbc.Driver新版用com.mysql.cj.jdbc.Driver。21.2.5 内置的 MySQL 驱动配置默认能识别但如果你手动改过库关系填错类名会直接报Class not found。我一般以“找到类”按钮自动识别为准不手填。4.3 Oracle 驱动离线补齐少数必须全家桶带着走的 4 个 jarOracle 是离线环境下最容易出问题的因为只拷ojdbc8.jar往往不够。Oracle 11g 之后的 JDBC 驱动在内部引用了安全相关类连接时大概率报oracle.jdbc.OracleDriver cannot be loaded或java.lang.NoClassDefFoundError。我在 aarch64 环境里手动补 Oracle 驱动时会同时准备四个 jarmkdir -p $HOME/.local/share/DBeaverData/driver/oracle cp ojdbc8.jar oraclepki.jar osdt_core.jar osdt_cert.jar $HOME/.local/share/DBeaverData/driver/oracle/复制完成后同样到“数据库 → 驱动管理器”找到 Oracle把这四个 jar 全部添加再点“找到类”。如果只添加ojdbc8.jar类名能识别出来但建连接时会因为缺少oracle.security.o5logon.O5Logon这类加密登录类而失败。遇到这个报错先检查这四个 jar 是否都在而不是改用户名密码。补充一点不同 Oracle 驱动版本依赖的附属 jar 略有差异21.2.5 时代默认的 Oracle 驱动是 ojdbc8所以上面四个文件是通用做法。如果内网环境里用的是 19c 数据库这套组合最常见如果用的是 12cojdbc6.jar也是同理。4.4 JDBC 连接串里值得提前调好的内网参数驱动加好后连接串参数也会影响能不能连上。以下面这条 MySQL 连接串为例jdbc:mysql://192.168.10.21:3306/assetdb?useSSLfalseallowPublicKeyRetrievaltrueserverTimezoneAsia/ShanghaiconnectTimeout5000useSSLfalse在内网环境里是常态很多旧数据库没配 SSL默认开反而会握手失败。allowPublicKeyRetrievaltrue是 MySQL 8 的缓存密码认证方式经常要求的不开可能报Public Key Retrieval is not allowed。connectTimeout5000控制建连超时内网跨网段时如果目标数据库负载高这个值能让你更快拿到失败反馈不会停在“正在连接”上。Oracle 的连接串不一样常见格式是jdbc:oracle:thin://192.168.10.22:1521/ORCLPDB这里//和数据库名之间必须按 SID/Service Name 的概念区分。.dbeaver-data-sources文件里的url字段可以直接改但更推荐在连接编辑页面的“驱动属性”里填。因为在驱动属性里改DBeaver 会记住你填了哪些下次同步配置时不会丢。5. aarch64 环境下载同款包常踩的 5 个坑现象、原因与排查命令这一章全是实际环境里高频出现的坑每一条我都按“现象 → 原因 → 解决”的顺序写。真遇到时先对照现象判断是哪一类再执行命令不要一上来就重装。5.1 双击图标闪退进程秒退默认 JRE 还是 Java 8现象终端执行./dbeaver几秒内进程消失终端输出里带UnsupportedClassVersionError或者什么都没显示。原因启动器沿 PATH 找到了 Java但版本是 8。DBeaver 21.2.5 要求 Java 11Java 8 编译的类在加载时直接抛版本不匹配。aarch64 国产 Linux 预装 JDK 8 非常普遍尤其是某些 office 软件自带 JRE 并把路径写进了全局 profile。解决先确认现在生效的 Javajava -version 21 which java若确认是 1.8安装 openjdk-11 后用update-alternatives --config java切换默认版本或者在 dbeaver.ini 里写死-vm。我的偏好是用 ini 写死因为系统里其他服务依赖 Java 8不能为了 DBeaver 全局切换。5.2 报“Could not load SWT library”或打不开显示GTK 与 Wayland 的锅现象启动时输出Could not load SWT library或Cannot open display界面没弹出来。原因linux.gtk 包依赖 GTK3 运行库但服务器 minimal 安装没有装另一类是远程机器没有 X serverDISPLAY 环境变量是空的。aarch64 服务器常见的坑是同时缺两样错误信息却只给一行 SWT 异常。解决先查缺失的动态库ldd /opt/dbeaver/*.so 2/dev/null | grep not found | head如果输出里带libgtk-3.so.0装 GTK3Debian/Ubuntu 系执行sudo apt install -y gtk3RHEL 系执行sudo dnf install -y gtk3。装完图形库后本地有桌面环境就直接再启动如果是远程无显示器用 X11 转发或设置 DISPLAY不要指望 SWT 自己会找显示设备。5.3 界面出现方块和乱码缺 CJK 字体不是 DBeaver 坏了现象窗口能打开菜单和数据库名全部是小方块或问号英文正常中文全乱。原因系统里没有安装中文字体fontconfig 找不到可用的 CJK 字体。aarch64 的 minimal 服务器镜像经常不装字体包这和 DBeaver 本身无关。解决安装中文字体后重建字体缓存sudo apt install -y fonts-noto-cjk # 或 dnf install -y wqy-zenhei fc-cache -f装完重启 DBeaver方块会变成正常中文。如果重启后还是乱码检查 localelocale输出里LANG如果不是zh_CN.UTF-8或en_US.UTF-8设置它再启动export LANGzh_CN.UTF-8这一步顺序不能反字体装了但 locale 不对界面语言会走 fallback照样是乱码。5.4 驱动类加载失败“Cannot load driver class” 的离线根因现象建 MySQL 或 Oracle 连接点“测试连接”时报Cannot load driver class com.mysql.cj.jdbc.Driver或Could not load driver。原因驱动 jar 没有真正被 DBeaver 加载。纯内网里最常见的是第一次建连接时 DBeaver 试图从网上下载驱动下载失败后驱动目录是空的或者 jar 复制到了目录但没有在驱动管理器里“添加 jar”。解决先看驱动目录里到底有没有 jarfind $HOME/.local/share/DBeaverData/driver -name *.jar | wc -l输出是 0说明驱动没落地按 4.2 或 4.3 手动补。输出不是 0 但连接仍报类不存在去驱动管理器把 jar 重新添加一遍再点“找到类”。手动添加过的 jar 会出现在驱动配置的“jar 列表”里只复制文件不上列表等于白做。5.5 重装或升级后连接全没了工作空间被新版本覆盖现象卸载旧版 DBeaver、重装 21.2.5打开后连接列表空白驱动设置也回到默认。原因连接配置不在安装目录里而是在~/.local/share/DBeaverData下。有人“彻底卸载”时把这个目录顺手删了或者覆盖了工作空间路径。新版安装后默认工作空间路径变化时DBeaver 不会自动迁移。解决升级或重装前先备份整个数据目录cp -a $HOME/.local/share/DBeaverData $HOME/backup-dbeaver-data-$(date %F)恢复时把备份里的workspace和credentials.json放回同名位置即可。如果你用了-data /data/dbeaver-workspace备份这个目录和安装包分离。从 21.2.5 升级到新版本时我习惯保留工作空间只换安装目录连接配置和驱动配置基本能无缝继承。6. 固定 JRE、固定 JVM把连接配置带走这台 aarch64 机器的日常维护安装跑通只是开始。aarch64 机器往往不是给一个人用的重启、换人、升级版本每次都可能碰到“刚才还能开现在不行了”。这一章给三个维持常态的技巧把启动参数写进 wrapper 脚本把连接配置导出成文件用日志和端口做一次快速自检。6.1 wrapper 启动脚本把 -data、JAVA_HOME 和字体环境一次性写好每次启动都敲 JVM 路径不现实。我一般会在安装目录旁边放一个启动脚本#!/usr/bin/env bash export JAVA_HOME/usr/lib/jvm/java-11-openjdk-arm64 export DBEAVER_HOME/opt/dbeaver export DISPLAY${DISPLAY:-:0} export GDK_BACKEND${GDK_BACKEND:-x11} export LANG${LANG:-zh_CN.UTF-8} exec $DBEAVER_HOME/dbeaver -data /data/dbeaver-workspace $保存为dbeaver.sh后执行chmod x dbeaver.sh。脚本把 JAVA_HOME、显示后端、locale 全部固定不管用户从哪个终端启动环境都是一致的。-vm可以继续留在 dbeaver.ini优先级反而比环境变量高。这样一台机器上即便装了两套 JDK也不会因为 profile 加载顺序不同而随机翻车。6.2 连接配置跨机迁移导出/导入的落地步骤内网分发时不用在每台机器上重新建连接。DBeaver 自带连接导出功能在“数据库导航器”里选中连接右键“导出”选择“导出连接”会得到一个.dbeaver-data-sources文件。把它拷到目标机器打开 DBeaver用“导入连接”选这个文件即可。需要注意导出的文件默认不包含密码账号密码要么迁移后手填要么导出时勾选包含凭据。内网环境里我一般勾选包含但会注意文件权限。这个文件里是明文形式的连接定义放 U 盘或共享目录时别混在普通资料里。6.3 快速验证与自检清单连接配置迁移完验证别只靠“看着像连上了”。我习惯用端口确认ss -tnp | grep dbeaver能看到到 3306 或 1521 的 ESTABLISHED 连接说明真实连上了。再配合日志tail -n 20 /data/dbeaver-workspace/.metadata/.log没有新的异常堆栈才算这次迁移完成。我自己用这个包时吃过两次亏一次是没看 uname 就把包拷过去另一次是升级完删了 DBeaverData都是可以用 5 分钟省回来的事。后来凡是 aarch64 机器我安装前必然做三件事确认架构、确认 Java 11、确认驱动目录可备份。这套流程走下来21.2.5 在这个架构上反而比不少新版更可控。希望帮到你。本文还有配套的精品资源点击获取
返回列表