往docker中cloudbeaver的容器添加达梦数据库、impala数据库连接支持(cloudbeaver添加自定义数据连接)

cloudbeaver默认没有开放impala连接,更不会支持国产数据库了

docker安装运行cloudbeaver可以参考文章:docker安装运行CloudBeaver并设置默认语言为中文

本文跳过cloudbeaver镜像拉取,直接就开始实现自定义数据库连接功能

1、初始化cloudbeaver容器挂载配置

1.1、新建挂载的宿主机根目录

  • 挂载的文件都放置该目录下
mkdir /usr/local/cloudbeavercd /usr/local/cloudbeaver

1.2、运行cloudbeaver容器,提取挂载文件

  • docker挂载时,不会自动把容器内的文件复制到宿主机
  • 运行cloudbeaver的目的是为了提取所需的挂载文件,为后续完整的cloudbeaver容器运行做铺垫
1、运行cloudbeaver
docker run  --name dbeaver-backup \
--privileged \
-p 8978:8978 \
-d dbeaver/cloudbeaver:latest
  • 我启动的容器ID为:bc78dedbc293(可以简写为bc)

2、cloudbeaver容器中工作目录概览

进入容器内部:

docker exec -it bc /bin/bash

  • conf:存放cloudbeaver配置文件
  • drivers:存放cloudbeaver连接各个数据库驱动的目录
  • server:cloudbeaver后端服务目录(java服务)
  • web:cloudbeaver的前端页面文件存放目录
  • workspace:cloudbeaver运行时数据存放目录,cloudbeaver默认数据库(h2)文件存储地
3、扩展cloudbeaver自定义连接的2个重要文件

在上述的cloudbeaver容器内部,执行:

cd /opt/cloudbeaver/server/plugins

找到2个文件:

①  io.cloudbeaver.resources.drivers.base_版本号.jar【cloudbeaver界面显示的数据库配置文件】

②  org.jkiss.dbeaver.ext.generic_版本号.jar【cloudbeaver数据库连接信息配置文件】

ls | grep io.cloudbeaver.resources.drivers.base
ls | grep org.jkiss.dbeaver.ext.generic

如下: 

我的2个文件为:

  • io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar
  • org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar

注意:同一个cloudbeaver镜像下,docker run时,这两个jar文件的版本号是一模一样的!

4、复制cloudbeaver容器中文件至宿主机

退出cloudbeaver容器:

exit

上面我们设定了宿主机挂载的根目录为:/usr/local/cloudbeaver

我们把所需文件一个个复制到上述目录中:

  • 复制cloudbeaver主配置文件
#bc是我的cloudbeaver容器ID
docker cp bc:/opt/cloudbeaver/conf/cloudbeaver.conf /usr/local/cloudbeaver/
  • 复制cloudbeaver驱动目录 
docker cp bc:/opt/cloudbeaver/drivers /usr/local/cloudbeaver/drivers
  • 复制扩展自定义数据库连接的2个jar文件
docker cp bc:/opt/cloudbeaver/server/plugins/org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar /usr/local/cloudbeaver/
docker cp bc:/opt/cloudbeaver/server/plugins/io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar /usr/local/cloudbeaver/

最终,/usr/local/cloudbeaver目录下的结构为:

5、删除cloudbeaver容器
  •  所需的挂载文件都拷贝至宿主机中了,之前运行的cloudbeaver可以删除,之后会运行新的cloudbeaver容器
docker stop bcdocker rm bc

2、添加自定义数据库连接配置

2.1、解压jar文件

  • 确保你的机器安装并配置好了jdk!

在上述目录(/usr/local/cloudbeaver)中,执行以下命令:

#后缀版本号请根据实际情况变更
unzip io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar -d io.cloudbeaver.resources.drivers.base_1.0.89.202401081229unzip org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar -d org.jkiss.dbeaver.ext.generic_2.3.208.202401081229

如果不能识别unzip,可以:yum install -y unzip 

解压后目录结构如下:

2.2、添加页面自定义数据库连接的选项配置

  • 进入io.cloudbeaver.resources.drivers.base_1.0.89.202401081229文件夹中,编辑plugin.xml文件
  • 目的:使自定义数据库连接项,能在cloudbeaver前端界面上展示并使用
cd io.cloudbeaver.resources.drivers.base_1.0.89.202401081229vi plugin.xml

在图示的3处位置添加对应内容:

  • 添加达梦数据库与impala数据库连接信息
<resource name="drivers/dm"/>
<resource name="drivers/impala"/><bundle id="drivers.dm" label="DM drivers"/>
<bundle id="drivers.impala" label="Impala drivers"/><driver id="generic:dm"/>
<driver id="generic:impala"/>

2.3、重新生成io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar文件

#压缩当前目录下的所有文件为io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar
jar -cvfm io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar META-INF/MANIFEST.MF ./#移动新生成的jar文件至上层目录,并覆盖原jar文件
mv io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar ../

  • 注意:在可视化界面使用压缩工具也能压缩成jar文件,但是一定要注意:只能在 io.cloudbeaver.resources.drivers.base_1.0.89.202401081229目录中进行压缩,不能在外层选择io.cloudbeaver.resources.drivers.base_1.0.89.202401081229文件夹进行压缩,这样压缩出来的jar文件结构是错误的!!! 

2.4、添加自定义数据库连接配置

  • 进入org.jkiss.dbeaver.ext.generic_2.3.208.202401081229文件夹中,编辑plugin.xml文件
cd org.jkiss.dbeaver.ext.generic_2.3.208.202401081229vi plugin.xml

在任意<driver></driver>标签位置的前或后添加以下信息:

<!-- 达梦数据库连接信息配置 -->
<driverid="dm"label="DM"icon="icons/dm.png"iconBig="icons/dm.png"class="dm.jdbc.driver.DmDriver"sampleURL="jdbc:dm://{host}[:{port}]/[{daStabase}]"defaultPort="5236"webURL="https://www.dameng.com/"description="达梦数据库连接选项!"><file type="jar" path="drivers/dm" bundle="drivers.dm"/></driver><!-- impala数据库连接信息配置 -->
<driverid="impala"label="Impala"icon="icons/impala_icon.png"iconBig="icons/impala_icon.png"class="com.cloudera.impala.jdbc41.Driver"sampleURL="jdbc:impala://{host}:{port}/{database}"defaultPort="25004"webURL="https://www.cloudera.com/downloads/connectors/impala/jdbc/2-5-41.html"description="impala数据库连接选项!"supportedConfigurationTypes="MANUAL,URL"category="Hadoop"categories="hadoop"><file type="jar" name="ImpalaJDBC41.jar" path="drivers/impala" bundle="drivers.impala"/><parameter name="query-get-active-db" value="select current_database()"/><parameter name="query-set-active-db" value="use ?"/><parameter name="string-escape-char" value="\"/><parameter name="omit-catalog" value="true"/><parameter name="supports-references" value="false"/></driver>

dm.png在cloudbeaver中是不存在的(impala_icon.png是自带的),我们可以使用任意图片即可,我这里附上一个达梦数据库图标:

如图:

2.5、重新生成org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar文件

jar -cvfm org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar META-INF/MANIFEST.MF ./#移动新生成的jar文件至上层目录,并覆盖原jar文件
mv org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar ../

3、添加自定义数据库驱动

  • 添加达梦与impala数据库驱动文件至指定目录中
达梦数据库
mkdir /usr/local/cloudbeaver/dm
cd /usr/local/cloudbeaver/dm

把达梦数据库驱动上传至该目录下(驱动在附件中,也可以在官网下载):

impala数据库
mkdir /usr/local/cloudbeaver/impala
cd /usr/local/cloudbeaver/impala

impala的驱动很多,都需要上传至impala目录下:

4、运行cloudbeaver

docker run --name dbeaver \
--restart=always \
--privileged \
-p 8978:8978 \
-v /usr/local/cloudbeaver/workspace:/opt/cloudbeaver/workspace \
-v /usr/local/cloudbeaver/drivers:/opt/cloudbeaver/drivers \
-v /usr/local/cloudbeaver/cloudbeaver.conf:/opt/cloudbeaver/conf/cloudbeaver.conf \
-v /usr/local/cloudbeaver/org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar:/opt/cloudbeaver/server/plugins/org.jkiss.dbeaver.ext.generic_2.3.208.202401081229.jar \
-v /usr/local/cloudbeaver/io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar:/opt/cloudbeaver/server/plugins/io.cloudbeaver.resources.drivers.base_1.0.89.202401081229.jar \
-d dbeaver/cloudbeaver:latest

稍微解释下:

--restart=always:

  • 容器退出时自动重启

--privileged:

  • 特权模式启动容器

-p 8978:8978:

  • cloudbeaver默认端口为8978,与宿主机8978端口一一映射

-v /usr/local/cloudbeaver/workspace:/opt/cloudbeaver/workspace

  • 把cloudbeaver容器中的/opt/cloudbeaver/workspace目录,挂载到宿主机的/usr/local/cloudbeaver/workspace目录
  • 这个目录很重要,用来存储cloudbeaver运行产生的数据文件等

-v /usr/local/cloudbeaver/drivers:/opt/cloudbeaver/drivers

  • 驱动挂载至宿主机中,方便以后我们对驱动进行维护

-v /usr/local/cloudbeaver/cloudbeaver.conf:/opt/cloudbeaver/conf/cloudbeaver.conf

  • 挂载cloudbeaver主配置文件,便于配置cloudbeaver

后面的2个jar挂载,是为了方便扩展自定义数据库连接

5、访问cloudbeaver

我的访问地址为:http://192.168.168.171:8978

初始化配置在这就不说了

新建下数据库连接,测试达梦或impala数据库是否支持:

自定义数据库连接添加成功!

如果连接达梦或impala失败,请检查:

  1. 自己上传的驱动版本是否支持??
  2. 网络是否开放?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/634212.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C语言——atoi函数解析

目录 前言 atoi函数的介绍 atoi函数的使用 atoi函数的模拟实现 前言 对于atoi函数大家可能会有些陌生&#xff0c;不过当你选择并阅读到这里时&#xff0c;请往下阅读&#xff0c;我相信你能对atoi函数熟悉该函数的头文件为<stdlib.h> 或 <cstdlib> atoi函数的…

基于springboot+vue的房屋租赁系统(前后端分离)

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战 主要内容&#xff1a;毕业设计(Javaweb项目|小程序等)、简历模板、学习资料、面试题库、技术咨询 文末联系获取 项目背景…

从 GPT1 - GPT4 拆解

从 GPT1 - GPT4 拆解 从 GPT1 - GPT4GPT1&#xff1a;更适用于文本生成领域GPT2&#xff1a;扩展数据集、模型参数&#xff0c;实现一脑多用&#xff08;多个任务&#xff09;GPT3&#xff1a;元学习 大力出奇迹InstructGPT&#xff1a;指示和提示学习 人工反馈强化学习 RLHF…

什么?2024年AMC8正式比赛提前20多分钟强制交卷?后续如何处理?

今天&#xff08;2024年1月19日&#xff09;17:00-17:40是2024年AMC8美国数学思维活动&#xff08;竞赛&#xff09;正式比赛的时间&#xff0c;全国报名参加AMC8比赛的孩子们按要求提前架设好了设备&#xff0c;准时按要求登录考试系统&#xff0c;17点准时开考。原计划是要考…

排序链表(LeetCode 148)

文章目录 1.问题描述2.难度等级3.热门指数4.解题思路参考文献 1.问题描述 给你链表的头结点 head &#xff0c;请将其按 升序 排列并返回 排序后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [4,2,1,3] 输出&#xff1a;[1,2,3,4]示例 2&#xff1a; 输入&#xff…

2023年全球软件架构师峰会(ArchSummit深圳站):核心内容与学习收获(附大会核心PPT下载)

本次峰会是一次重要的技术盛会&#xff0c;旨在为全球软件架构师提供一个交流和学习的平台。本次峰会聚焦于软件架构的最新趋势、最佳实践和技术创新&#xff0c;吸引了来自世界各地的软件架构师、技术专家和企业领袖。 在峰会中&#xff0c;与会者可以了解到数字化、AIGC、To…

C语言-字符串分割函数 strtok、strtok_r

一、函数介绍 函数名 strtok, strtok_r - extract tokens from strings //从字符串中提取标记头文件 #include <string.h>文件原型 char *strtok(char *str, const char *delim);char *strtok_r(char *str, const char *delim, char **saveptr);二、测试代码 官方代码…

外网连接配置及acl配置使用

外网连接 在路由器上进行配置 配置nat功能 NAT配置&#xff1a; [R1]acl basic 2000 创建acl规则 编号为2000 [R1-acl-ipv4-basic-2000]rule 0 permit source any 允许所有数据包 [R1-acl-ipv4-basic-2000]quit [R1]nat address-group 1 配置出接口转换地址 [R…

Unity-场景

创建场景 创建新的场景后&#xff1a; 文件 -> 生成设置 -> Build中的场景 -> 将项目中需要使用的场景拖进去 SceneTest public class SceneTest : MonoBehaviour {// Start is called before the first frame updatevoid Start(){// 两个类&#xff1a; 场景类、场…

广告灯的左移右移

1&#xff0e;  实验任务 做单一灯的左移右移&#xff0c;硬件电路如图4.4.1所示&#xff0c;八个发光二极管L1&#xff0d;L8分别接在单片机的P1.0&#xff0d;P1.7接口上&#xff0c;输出“0”时&#xff0c;发光二极管亮&#xff0c;开始时&#xff0c;P1.0→P1.1→P1.2→…

【分享】MathWorks中国汽车年会:“软件定义汽车”

从软件赋能到软件定义&#xff0c;汽车行业不仅需要解决诸如错误发现滞后带来的高昂代价、功能融合所需的跨学科知识、功能安全与实施成本之间的权衡等老问题&#xff0c;也面临着新的挑战&#xff1a;软件复杂度的不断提升、利用数据驱动创造价值、人工智能的引入和实现、数字…

transbigdata笔记:清理研究区域内的轨迹漂移

1 方法介绍 transbigdata 考虑了三种轨迹漂移&#xff0c;需要被清理 速度阈值&#xff1a;如果当前轨迹数据点与之前&#xff08;和后续&#xff09;轨迹数据点之间的速度超过阈值&#xff0c;则视为漂移。 距离阈值&#xff1a;如果当前轨迹数据点与上一个&#xff08;和后…

统计学-R语言-6.2

文章目录 前言总体均值的区间估计两个总体均值之差的估计两个总体均值之差的估计&#xff08;独立大样本的估计&#xff09;两个总体均值之差的估计&#xff08;独立小样本的估计&#xff09;两个总体均值之差的估计&#xff08;配对样本的估计&#xff09; 总体比例的区间估计…

python数字图像处理基础(九)——特征匹配

目录 蛮力匹配&#xff08;ORB匹配&#xff09;RANSAC算法全景图像拼接 蛮力匹配&#xff08;ORB匹配&#xff09; Brute-Force匹配非常简单&#xff0c;首先在第一幅图像中选取一个关键点然后依次与第二幅图像的每个关键点进行&#xff08;描述符&#xff09;距离测试&#x…

前端-基础 表格标签 总结

目录 表格的相关标签 &#xff1a; 表格的相关属性 合并单元格 &#xff1a; 表格的相关标签 &#xff1a; 表格标签 - <table> 行标签 - <tr> 单元格标签 - <td> 表头单元格标签 - <th> 表格结构标签 表头区域标签 - < thead >…

MySQL 查询数据

今天介绍一下 MySQL 数据库使用 SELECT 语句来查询数据。 语法 首先&#xff0c;介绍一下语法。以下为在 MySQL 数据库中查询数据通用的 SELECT 语法&#xff1a; SELECT column1, column2, ... FROM table_name [WHERE condition] [ORDER BY column_name [ASC | DESC]] [LI…

【算法】递归

递归 递归初始递归&#xff1a;数列求和递归的应用&#xff1a;任意进制转换递归深度限制递归可视化&#xff1a;分形树递归可视化&#xff1a;谢尔宾斯基Sierpinski三角形递归的应用&#xff1a;汉诺塔递归的应用&#xff1a;探索迷宫 分治策略和递归优化问题兑换最少个数硬币…

Vue 3 hooks的基本使用及疑问

前言 vue3也用过一段时间了&#xff0c;hooks听说过&#xff0c;但是一直没有用过。公司的前端项目里也没有相应的应用&#xff0c;因此打算系统的学习一下。 hooks与普通函数的区别 以实现一个加法功能为例。 普通函数未抽离 <template><div class"box&quo…

Java开发的审批流系统,前端使用vue,支持常态化工作审批流程

一、项目形式 springbootvueactiviti集成了activiti在线编辑器&#xff0c;快速开发平台&#xff0c;可插拔工作流服务。 二、项目介绍 本项目拥有用户管理&#xff0c;部门管理&#xff0c;代码生成&#xff0c;系统监管&#xff0c;报表&#xff0c;大屏展示&#xff0c;业…

贝塞尔曲线(Bezier Curve)原理、公式推导及matlab代码实现

目录 参考链接 定义 直观理解 公式推导 一次贝塞尔曲线&#xff08;线性公式&#xff09; 二次贝塞尔曲线&#xff08;二次方公式&#xff09; 三次贝塞尔曲线&#xff08;三次方公式&#xff09; n次贝塞尔曲线&#xff08;一般参数公式&#xff09; 代码实现 参考链接…