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失败,请检查:
- 自己上传的驱动版本是否支持??
- 网络是否开放?