暂无图片
opengauss JDBC 连接全密态数据库,参数设置enable_ce=1不生效
我来答
分享
Grha!
2022-11-18
opengauss JDBC 连接全密态数据库,参数设置enable_ce=1不生效

环境是在Ubuntu上,用intelij idea

opengauss版本是openGauss_3.1.0 企业版

jar包是gsjdbc4.jar,是从华为控制中心下载的8.1.x版本

项目里的代码是从opengauss文档里copy的示例代码:

但一直报错Un-support to create client master key when client encryption is disabled 

jar包我把上述下载链接里的所有版本都试过了,都是这个问题,jdbc可以正常连接数据库,gsql也可以正常使用全密态操作,感觉很疑惑。

package org.opengauss;
import java.sql.*;
import java.util.Properties;
public class connectsql {
    //以下代码将获取数据库连接操作封装为一个接口,可通过给定用户名和密码来连接数据库。
    public static Connection getConnect(String username, String passwd)
    {
        //驱动类。
        String driver = "org.postgresql.Driver";
        //数据库连接描述符。
        String sourceURL = "jdbc:postgresql://192.168.62.128:5430/postgres?enable_ce=1";
        Connection conn = null;
        Properties info = new Properties();
        try
        {
            //加载驱动。
            info.setProperty("enable_ce","1");
            info.setProperty("user",username);
            info.setProperty("password",passwd);

            Class.forName(driver);
        }
        catch( Exception e )
        {
            e.printStackTrace();
            return null;
        }

        try
        {
            //创建连接。
            conn = DriverManager.getConnection(sourceURL, info);
            System.out.println("Connection succeed!");
        }
        catch(Exception e)
        {
            e.printStackTrace();
            return null;
        }

        return conn;
    };

    public static void main(String[] args) throws SQLException {
        // TODO 自动生成的方法存根
       new connectsql();
       Connection myconnection = connectsql.getConnect("alice","demo@123");
        Statement stmt = myconnection.createStatement();
        int rc = stmt.executeUpdate("CREATE CLIENT MASTER KEY 
    }
}

复制
我来答
添加附件
收藏
分享
问题补充
4条回答
默认
最新
彭冲

你的这个环境我手头没有现成的,无法验证。

建议可以按如下方式来做排除验证:

1.服务端使用Cento7.6 + openGauss 3.0 + openGauss官网下载3.0的jdbc驱动

https://opengauss.org/zh/download/
image.png

这种方式应该是可以测通的,我也验证过。

2.服务端不变,还是centos7.6,客户端换成Ubuntu测试。

3.服务端使用Ubuntu安装openGauss 3.0,客户端使用Ubuntu测试

暂无图片 评论
暂无图片 有用 0
打赏 0
愤怒的蜗牛
2022-11-19
Grha!
题主
2022-11-19
3.0的jdbc驱动里没有gsjdbc4.jar,只需要posgresql.jar以及opengauss-jdbc-3.0.0.jar这两个驱动包是嘛
Grha!
题主
2022-11-19
您好,我在服务端使用了Cento7.6 + openGauss 3.0的配置,客户端是Cento7.6,但使用最新的gsjdbc4.jar这个包仍然无法设置成功,想问下您说的3.0的jdbc驱动是包括了gsjdbc4.jar这个包的吗
展开全部评论(3条)
Grha!
升级问题到: 紧急故障
暂无图片 评论
暂无图片 有用 0
打赏 0
DarkAthena
2022-11-19
gsjdbc4.jar是 gaussdb数据库的jdbc驱动包 ,opengauss-jdbc-3.0.0.jar是openGauss数据库的jdbc驱动包
彭冲

https://www.modb.pro/issue/17826#comment

这个问题我看你提示已解决了。

jar打包到linux测试,windows平台就会报上面的错误。

暂无图片 评论
暂无图片 有用 0
打赏 0
Grha!
题主
2022-11-20
还没有解决,之前是更换了gsjdbc4.jar这个驱动不会显示“no gauss_cl_jni in java.library.path”这个报错。但是使用了opengauss-jdbc-3.0.0.jar还是有这个报错。 在opengauss官网文档: https://docs.opengauss.org/zh/docs/3.0.0/docs/Developerguide/%E4%BD%BF%E7%94%A8JDBC%E6%93%8D%E4%BD%9C%E5%AF%86%E6%80%81%E6%95%B0%E6%8D%AE%E5%BA%93.html 中关于3.0.0版本的JDBC密态操作中,我看他写需要使用驱动包gsjdbc4.jar,加载的驱动类为“org.postgresql.Driver” 而在 “开发者指南->应用程序开发教程->基于JDBC开发->连接数据库” https://docs.opengauss.org/zh/docs/3.0.0/docs/Developerguide/%E8%BF%9E%E6%8E%A5%E6%95%B0%E6%8D%AE%E5%BA%93-0.html 中使用的驱动是postgresql.jar,其数据库连接属性中也包括了"enable_ce",按理来说这个包也是可以的。所以感觉很矛盾,不知道问题出在哪个地方。 我查看jar包的源码,当设置了连接属性"enable_ce=1",时,org.opengauss.jdbc这个包中的ClientLogicImpl类需要加载“System.loadLibrary("gauss_cl_jni");”,这里出现了问题
愤怒的蜗牛
2022-11-21
彭冲

我再详细解释一下,这个问题你提了两次issue,看得出来你比较急,在你的第一个问题里其实已经有解答。

最前面的回答提示过你参照环境来测试,但估计你没完全理解,或者你被文档带偏了。

先统一几个概念:
1.只说openGauss,jdbc驱动也是使用上面官方下载的openGauss-jdbc 3.0

2.不管驱动名称是org.opengauss.Driver还是org.postgresql.Driver都可以,是一样的功能,你既然可以看到源码,也可以验证。有两个不同的jar文件提供不同的包名是为了能同时使用openGauss和pg数据库。

最后我重复确认下我在你第一个问题里的答案:使用openGauss-jdbc 3.0编写好代码,打成可执行jar包,在Centos7.6安装openGauss 3.0的linux客户端进行测试是可以成功的。

报错提示的动态库gauss_cl_jni在openGauss安装的lib下,如下图:
image.png

如果你omm用户下配置了正确的LD_LIBRARY_PATH变量,能找到openGauss的lib,那么你的jar包应该可以执行。

另外如果你gsql能测试通,你应该也配置过LOCALKMS_FILE_PATH环境变量,比如我配置的是

export LOCALKMS_FILE_PATH=/home/omm/localkms
复制

image.png

暂无图片 评论
暂无图片 有用 1
打赏 0
Grha!
题主
2022-11-20
好的,谢谢您!我尝试解决一下
回答交流
Markdown


请输入正文
提交
相关推荐
如何使用gs_expansion扩展节点
回答 2
执行扩容命令报如下错误:[root@host134script]./gsexpansionUommGdbgrpX/tmp/clusterconfigtemplate.xmlh192.168.1.85T
opengauss主备架构配合keeplive使用
回答 1
已采纳
更好的架构,使用企业版,比如MogDB。openGauss就是单机版的,主备架构用Keepalived或者pacemaker都可以,没有什么太大风险,两者都是成熟的中间件。
JDBC查询空表不返回,卡住,怎么解决?
回答 5
应该是哪里异常了,打印下日志,debug看下吧
OpenGauss数据库创建表报错
回答 2
暂无文字回复
隐私计算现在也是很热的领域,请问李老师:全密态数据库,是否可以用在隐私计算上呢?
回答 1
冒充个李老师,呵呵:全密态数据库本身就是基于密码学思想的,同态加密算法是当前全密态数据库的核心技术之一,同态加密也同样适用于隐私计算领域
请问下opengauss安装成功后,不安装openssl11-libs,影响使用嘛?
回答 1
数据库正常访问没有啥影响,如果你采用SSL加密通道的话可能需要使用到这些库文件
openguass支不支持并行
回答 1
https://opengauss.org/zh/docs/3.0.0/docs/BriefTutorial/%E5%B9%B6%E8%A1%8C%E6%9F%A5%E8%AF%A2.html看看这个
openGauss 5.0.2数据库安装报错
回答 1
已采纳
用omm用户检查“/opt/huawei/openGauss/install/app/bin/gsinitdb”文件是否存在,权限是否正确
openGauss企业版安装出错
回答 1
已采纳
这里已经报错了[GAUSS51400]:Failedtoexecutethecommand:source/home/omm/.bashrc;python3‘/opt/huawei/install/om
opengauss Datakit 5.0.0迁移
回答 1
暂无文字回复