编译Cloudbeaver 和 连接 OpenGauss

目录

一、下载源码

二、安装编译构建工具

三、执行编译构建

四、在Linux下安装Cloudbeaver

五、向Cloudbeaver 添加 OpenGauss 驱动

六、连接操作PostgreSQL

七、连接操作OpenGauss

八、连接操作MySQL 


Cloudbeaver是运行于服务器端的数据库管理软件,它采用BS模式,客户端通过浏览器打开操作界面,支持多种数据库。Cloudbeaver后台底层依赖于Dbeaver,通过JDBC连接数据库,Dbeaver也有独立运行版本,是CS模式数据库管理软件。Cloudbeaver的BS模式特别适用于云计算环境,可以避免暴露数据库服务器的IP地址和端口号。Dbeaver和Cloudbeaver都是用java编写,运行时需要JDK11或更高版本,参考官网要求(Documentation – CloudBeaver)。

一、下载源码

需要两部分源码:cloudbeaver和dbeaver,下载cloudbeaver时会自动下载dbeaver的源码。国内gitee的镜像上的代码是可用的,当然如果能用github更好。git clone 时要注意,根目录命名为小写的cloudbeaver,这个和编译脚本有关:

git clone https://gitee.com/mirrors/CloudBeaver.git cloudbeaver

到deploy目录下执行build.sh,但它会到github下载dbeaver的源码,修改下载地址:

git clone https://gitee.com/mirrors/dbeaver.git

许多人觉得gitee上的代码有问题,但其实是没有指定好分支,选对分支非常非常关键,否则会出现奇怪的编译错误,我之前就在这上面浪费了很多时间。注意,不要用tag,而是要用分支

cloudbeaver 选分支 origin/release_22_3_1

cd cloudbeaver

git branch -r

git co -b release_22_3_1 --track origin/release_22_3_1

同样 dbeaver 也要选分支 origin/release_22_3_1

cd dbeaver

git br branch -r

git co -b release_22_3_1 --track origin/release_22_3_1

二、安装编译构建工具

1、需要 g++ >= 7.3.0,因为有一步有-std=c++14,我用的是7.3.0。

2、我的环境 OPENJDK17,maven-3.8.6,cloudbeaver/beaver更新了22.3.1以后JDK11也不行了,JDK下载地址:

Archived OpenJDK GA Releases (java.net)

3、参考官网Documentation – CloudBeaver,安装npm,但稍有不同,我是sudo yum install npm安装完npm后,用npm安装yarn、lerna和nodejs,我的操作系统是CentOS-7.9,用的是国内的网,没有翻墙。

sudo npm install -g yarn nodejs lerna

虽然编译的时候要依赖这么多,但运行时只需要JDK17。

三、执行编译构建

到源码cloudbeaver/deploy目录下执行./build.sh,这个过程会下载很多依赖包,建议maven使用国内源,我用的是南京大学的(下面加到maven的conf/settings.xml):

    <mirror>

      <id>nju_mirror</id>

      <mirrorOf>central</mirrorOf>

      <url>https://repo.nju.edu.cn/repository/maven-public/</url>

    </mirror>

构建完成后,结果在deploy/cloudbeaver下,把这个目录打包,移动到其它Linux服务器上,配置好JDK(环境变量PATH和JAVA_HOME),执行里面的run-server.sh,后台就运行起来了。

我试过在翻墙的情况下构建,没有问题,也试过使用国内的代码库和软件源,全程没有翻墙的情况,也可以构建成功,有时不成功,我就多执行了几次build.sh,结果可以了,请相信国内的地址。

四、在Linux下安装Cloudbeaver

1、安装JDK

由于我编译时用的是OpenJDK17,运行时,把OpenJDK17的压缩包部署在运行环境即可,只需配置两个环境变量,例如:

export PATH=/mnt/disk01/jdk-17.0.2/bin:$PATH

export JAVA_HOME=/mnt/disk01/jdk-17.0.2

这两行还可以加到用户的~/.bash_profile文件中。

2、安装和启动Cloudbeaver

解压cloudbeaver.tar.gz,得到目录cloudbeaver,可以放在任何位置。

cd cloudbeaver

执行./run_server.sh

如果需要配置参数,可修改cloudbeaver/conf/cloudbeaver.conf,Web服务器的默认端口号是8978

Ctl+c或者kill掉进程(不需要-9)可关闭Cloudbeaver,也可以使脚本在后台执行,例如:

nohup ./run-server.sh > log 2>&1 &

3、登录Cloudbeaver

成功启动后,在浏览器输入(运行run-server.sh的)服务器IP地址和端口号:

http://172.32.148.154:8978

浏览器建议使用Microsoft Edge,我在使用Chrome时,查询表时遇到了下面的问题,换了Microsoft Edge就没有问题:

 

如上图,第一次打开页面,会要求创建账号密码,这个账号密码不是数据库的账号密码,而是登录Cloudbeaver的账号密码,之后要用这个账号密码登录才能继续操作,点“NEXT”(删除安装目录cloudbeaver/workspace下的.data、.metadata和GlobalConfiguration可以重置Cloudbeaver)

 登录之后,就是配置数据库连接页面,默认内置了多种数据库驱动。建议先点右上角的“设置”图标(齿轮),切换语言。

五、向Cloudbeaver 添加 OpenGauss 驱动

下载OpenGauss JDBC :软件包 | openGauss您可以从此页获取openGauss版本下载以及安装指导icon-default.png?t=N7T8https://opengauss.org/zh/download.html%C2%A0解压后得到 opengauss-jdbc-3.0.0.jar 和 postgresql.jar 两个jar包,将 postgresql.jar 放到编译后的 deploy/cloudbeaver/drivers/postgresql 目录下,并且删除原有的 postgresql-42.3.3.jar,这样在界面选择PostgreSQL时,加载的是 postgresql.jar ,而这个 postgresql.jar,是“披着PostgreSQL JDBC外衣的OpenGauss JDBC”。然后以PostgreSQL一样的方式设置IP、端口、用户名密码,就可以借用PostgreSQL的逻辑和UI操作OpenGauss了。

上面添加OpenGauss JDBC驱动的做法有点不“正规”,简单地将PostgreSQL的JDBC Driver替换为OpenGauss的JDBC Driver,有两个问题:1)有些操作PostgreSQL的逻辑对OpenGauss不适用。2)按上面的方法,在创建连接菜单中,有了OpenGauss就没有PostgreSQL,如果需要保留PostgreSQL,让PostgreSQL选项和OpenGauss选项同时存在,怎么办呢?

下面就用一种“正规”方法添加OpenGauss驱动的。

参考:

Adding new database drivers · dbeaver/cloudbeaver Wiki · GitHub

Cloudbeaver底层依赖Dbeaver,用过Dbeaver的朋友都知道,如果想要Dbeaver支持一种新的数据库(驱动),可以编写一个插件,这插件在这种数据库的JDBC Driver外封装了一层,针对这种数据库增加特殊的操作界面,但如果新的数据库只要求支持通用的JDBC操作,则可以使用已有的org.jkiss.dbeaver.ext.generic插件,不需要专门编写插件代码。这里增加OpenGauss驱动就是用这种方法。

下面是修改步骤:

1、首先进入dbeaver源码目录,修改plugins/org.jkiss.dbeaver.ext.generic/plugin.xml,增加OpenGauss JDBC Driver的描述,如下:

[postgres@SFpnBq1027263 dbeaver]$ git diff plugins/org.jkiss.dbeaver.ext.generic/plugin.xml
diff --git a/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml b/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml
index 14f4c2d..32742a5 100644
--- a/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml
+++ b/plugins/org.jkiss.dbeaver.ext.generic/plugin.xml
@@ -1255,6 +1255,23 @@
                     <property name="rewriteBatchedStatements" value="true"/>
                 </driver>

+
+                <driver
+                        id="opengauss"
+                        label="OpenGauss"
+                        icon="icons/opengauss_icon.png"
+                        iconBig="icons/opengauss_icon_big.png"
+                        class="org.opengauss.Driver"
+                        sampleURL="jdbc:opengauss://{host}[:{port}]/[{database}]"
+                        defaultPort="5432"
+                        webURL="https://opengauss.org"
+                        description="OpenGauss JDBC driver.">
+
+                    <file type="jar" path="drivers/opengauss" bundle="drivers.opengauss"/>
+
+                </driver>
+
+
                 <driver
                         id="postgresql_generic"
                         label="PostgreSQL (Old)"

id="opengauss" 是OpenGauss驱动的ID,后面cloudbeaver的配置中,要用这个字符串识别。

label="OpenGauss" 可以随便写,只用于显示。

icon 和 iconBig 是自定义驱动的图标文件,路径是相对于plugins/org.jkiss.dbeaver.ext.generic/,例如 icon="icons/opengauss_icon.png" 表示图标文件在:plugins/org.jkiss.dbeaver.ext.generic/icons/opengauss_icon.png

(可以自己做一个图标放在这个位置)

class="org.opengauss.Driver" 是java源文件导入(import)jdbc驱动时的类名,OpenGauss JDBC驱动的jar文件(opengauss-jdbc-3.0.0.jar)里提供的类就是org.opengauss.Driver。

sampleURL="jdbc:opengauss://{host}[:{port}]/[{database}]" 是OpenGauss的JDBC连接字符串。

defaultPort="5432" 默认连接OpenGauss的端口号,可以随便写,因为创建连接时还可以在页面修改。

webURL="https://opengauss.org" 可以随便写。

description="OpenGauss JDBC driver." 可以随便写,只用来显示。

<file type="jar" path="drivers/opengauss" bundle="drivers.opengauss"/> 表示 OpenGauss JDBC Driver的jar包,在cloudbeaver编译结果(deploy/cloudbeaver)目录下的drivers/opengauss/中。

2、进入cloudbeaver源码目录,修改server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml,增加下面内容:

[postgres@SFpnBq1027263 cloudbeaver]$ git diff server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml
diff --git a/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml b/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml
index 284e055..7f27fcd 100644
--- a/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml
+++ b/server/bundles/io.cloudbeaver.resources.drivers.base/plugin.xml
@@ -16,6 +16,7 @@
         <resource name="drivers/sqlite/xerial"/>
         <resource name="drivers/mssql/new"/>
         <resource name="drivers/trino"/>
+        <resource name="drivers/opengauss"/>
     </extension>

     <!-- Bundles  -->
@@ -34,6 +35,7 @@
         <bundle id="drivers.sqlite.xerial" label="SQLite drivers"/>
         <bundle id="drivers.mssql.new" label="SQL Server drivers"/>
         <bundle id="drivers.trino" label="Trino drivers"/>
+        <bundle id="drivers.opengauss" label="OpenGauss drivers"/>
     </extension>

     <!-- Enabled drivers -->
@@ -52,6 +54,7 @@
         <driver id="sqlite:sqlite_jdbc"/>
         <driver id="sqlserver:microsoft"/>
         <driver id="generic:trino_jdbc"/>
+        <driver id="generic:opengauss"/>
     </extension>

修改server/drivers/pom.xml,增加下面内容:

[postgres@SFpnBq1027263 cloudbeaver]$ git diff server/drivers/pom.xml
diff --git a/server/drivers/pom.xml b/server/drivers/pom.xml
index 9562a0d..e3092af 100644
--- a/server/drivers/pom.xml
+++ b/server/drivers/pom.xml
@@ -25,6 +25,7 @@
         <module>sqlite</module>
         <module>sqlserver</module>
         <module>trino</module>
+        <module>opengauss</module>
     </modules>

     <build>

创建目录 server/drivers/opengauss,再在其中创建pom.xml,内容如下图,这样构建cloudbeaver时,maven会到中央仓库下载opengauss-jdbc-3.0.0.jar,它就是OpenGauss的JDBC驱动。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>drivers.opengauss</artifactId>
    <version>1.0.0</version>
    <parent>
        <groupId>io.cloudbeaver</groupId>
        <artifactId>drivers</artifactId>
        <version>1.0.0</version>
        <relativePath>../</relativePath>
    </parent>

    <properties>
        <deps.output.dir>opengauss</deps.output.dir>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.opengauss</groupId>
            <artifactId>opengauss-jdbc</artifactId>
            <version>3.0.0</version>
        </dependency>
    </dependencies>

</project>

更详细的修改见代码库:

https://gitee.com/hwrd/dbeaver

https://gitee.com/hwrd/cloudbeaver

然后重新编译cloudbeaver:

cd deploy

./build.sh

编译结果的cloudbeaver/drivers/目录下会多出一个opengauss目录,里面有opengauss-jdbc-3.0.0.jar。(如果想升级驱动,可以到网上下载高版本的opengauss jdbc替换掉这个文件)

然后像前面一样,安装、启动cloudbeaver,在创建数据库连接的界面,可以看到新增加的OpenGauss选项:

六、连接操作PostgreSQL

登录Cloudbeaver后,在管理界面左侧,选“连接管理”->“添加”,选PostgreSQL:

 然后设置PostgreSQL数据库所在机器的IP、端口、所要连接的数据库名、数据库用户和密码,点“测试连接”:

如果配置没问题,会弹出下面的消息,然后点“创建”:

在创建后的界面,选右上角“设置”图标的“返回应用”,才能看到刚刚建立的PostgreSQL连接。

此时,点右上角“设置”的“管理”,可以回到刚才创建数据库连接的界面(称为管理界面)。在管理界面的设置选“返回应用”,则回到操作数据库的界面,可以理解Cloudbeaver有两个主要界面:1)“管理”界面用来设置Cloudbeaver总的参数,和创建多个到不同数据库的连接。2)“应用”界面是具体操作数据库的界面,对数据库的浏览、SQL操作,都在这个界面。

配置好到PostgreSQL的连接后,每次登录数据库都要求输入用户名密码,除非选择“保存凭据”。 

下图是登录数据库后的界面,可以查看数据库对象,点“SQL”打开SQL窗口,像psql一样通过SQL操作数据库,还可以导出导入脚本和表。

七、连接操作OpenGauss

在“管理”界面的“添加”中选OpenGauss

类似于前面配置PostgreSQL连接,输入数据库主机IP、端口、数据库名、数据库用户名和密码,点“测试连接”。

测试成功后点“创建” 然后 “返回应用”

数据库操作界面与PostgreSQL类似,点“SQL”,打开SQL窗口,可以操作数据库,导入导出脚本和表。由于OpenGauss界面使用通用JDBC的插件,界面不如PostgreSQL丰富,不过通过SQL窗口可以得到同样结果。

八、连接操作MySQL 

在“管理”界面的“添加”中选MySQL,然后填写MySQL数据库服务器的IP、端口、用户名和密码。 

点“测试连接”,成功后点“创建”

 然后点“返回应用” 

 

数据库操作界面与前面类似,点“SQL”,打开SQL窗口,可以操作数据库,导入导出脚本和表。 

Cloudbeaver可以同时建立到多个不同或相同类型数据库的连接,保存这些连接,并且同时操作这些数据库。 

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值