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

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

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

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

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

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

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

cd /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 bc

docker 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.202401081229

unzip 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.202401081229

vi 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.202401081229

vi plugin.xml

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

<!-- 达梦数据库连接信息配置 -->
<driver
		id="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数据库连接信息配置 -->
<driver
		id="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. 网络是否开放?
### 使用DBeaver连接运行在Docker容器中的达梦数据库 为了使DBeaver能够成功连接到位于Docker容器内的达梦数据库,需遵循一系列配置步骤来确保网络可达性和驱动兼容性。 #### 配置Docker容器以暴露达梦服务端口 当启动包含达梦数据库Docker镜像时,应该指定映射主机与容器之间的特定端口号。这通常通过`docker run`命令加上参数`-p 主机端口:容器内部端口`实现[^1]。例如: ```bash docker run -d --name damengdb -e DM_SERVICE_NAME=dm_service -p 5236:5236 dameng/dmdb:latest ``` 这里假设达梦默认监听的是5236端口,并将其映射到了宿主机相同的端口上。 #### 获取并设置JDBC Driver 对于达梦数据库而言,在DBeaver中建立新连接前,先要下载适用于该版本的JDBC驱动程序文件(通常是`.jar`)。接着打开DBeaver软件,导航至Driver Manager界面导入此.jar包作为新的数据源类型定义的一部分[^2]。 #### 创建DBeaver连接配置 完成上述准备工作后,按照如下方式设定一个新的数据库连接: - **Connection Type**: 选择“Generic JDBC” - **Host/Server Name or IP Address**: 输入本地机器地址即localhost或者是实际部署环境下的服务器IP。 - **Port Number**: 前面提到过的对外公开的服务端口号,比如这里的5236。 - **Database name**: 如果适用的话,则填写对应的schema名称;如果不确定可以留空尝试首次登录后再做调整。 - **User & Password**: 提供具有适当权限访问目标库表结构的有效用户名密码组合。 一旦所有必填项都已正确填充完毕,点击测试按钮验证能否顺利抵达目的地以及执行基本查询操作。 #### 解决可能出现的问题 假如遇到类似于“Unknown database”的提示信息,可能是因为所给定的名字并非真正存在的模式名或是路径不匹配造成的误解。此时应回顾官方文档确认确切命名规则,必要时借助SQL客户端工具先行探索现有对象列表再作相应修改。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

睡竹

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值