当前位置: 首页 > 知识库问答 >
问题:

在kerberos授权下使用JDBC连接到impala时出错

盖绪
2023-03-14

我创建了一个扩展DriverManagerDataSource的SecureImpalaDataSource类,并使用< code > user group information . doas()用keytab文件连接到impala。但是我得到的错误如下:

java.sql.SQLException:[Simba]ImpalaJDBCDriver为身份验证初始化或创建传输时出错:[Simba]ImpalaJDBCDriver无法连接到服务器:null。

但是当我在一个测试演示中获得与kerberos票证缓存的连接时,我成功了。有人能帮我吗?

共有3个答案

端木安国
2023-03-14

验证jdbc连接的一种方法是使用ugi.doAs。以下是示例代码

// 1. login use keytab
System.setProperty("java.security.krb5.realm", "XXX.COM");
System.setProperty("java.security.krb5.kdc", "kdcXXX");
Configuration conf = new Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation ugi = UserGroupInformation.loginUserFromKeytabAndReturnUGI("test", "test.keytab");

// 2. create impala jdbc connection
Class.forName(JDBCDriverName);
conn = (Connection) ugi.doAs(new PrivilegedExceptionAction<Object>() {
  public Object run() {
    Connection tcon = null;
    try {
      tcon = DriverManager.getConnection(connectionUrl);
    } catch (SQLException e) {
      e.printStackTrace();
    }
    return tcon;
  }
});

// 3. execute query using conn
......
焦博实
2023-03-14

结果是我的URL中的HOST和FQDN不一致。

薛扬
2023-03-14

忘记Hadoop UGI:一个JDBC驱动程序只需要原始的JAAS配置就可以动态创建一个Kerberos票证(提高< code>useKeyTab并降低< code>useTicketCache)。

系统属性

    < Li > < code > Java . security . krb5 . conf =

示例JAAS配置文件,Impala/Hive Cloudera驱动程序< br >此处使用Java风格的符号表示Windows路径。

Client {
  com.sun.security.auth.module.Krb5LoginModule
    required
  useTicketCache=false
  doNotPrompt=true
  useKeyTab=true
  keyTab="file:C:/blah/blah/dummy.keytab"
  principal="dummy@SOME.REALM"
  debug=false;
};

示例JAAS conf文件,Apache Hive驱动程序< br >只需将节名从< code>Client改为< code > com . sun . security . jgss . krb5 . initiate < br > PS:可以在同一个conf文件中填充多个节;这意味着您可以定义一个“全局”配置,并将其用于多种工具

调试

  • sun.security.krb5.debug=
 类似资料:
  • 连接到kerberized hadoop环境时错误:[Simba]ImpalaJdbcDriver无法连接到服务器:[Simba]ImpalaJdbcDriver Kerberos身份验证失败。 我已经在virtualbox中安装了cloudera quickstart vm,启用了kerberos,编写了连接到imapala db的java代码,并得到了kerberos身份验证失败的错误。 我已

  • 可以使用jdbc和Kerberos委托从我的java应用程序连接到SAP HANA DB吗? 现在,我可以创建与 SAP HANA DB 的 jdbc 连接,而无需输入数据库登录名和密码,仅使用 Windows 登录名。为此,我在 SAP HANA 管理控制台 (user1@domain_name) 中为 db 用户设置 Kerberos 外部 ID,并在创建 jdbc 连接时使用属性“Nativ

  • 我们所面临的问题已在许多文件中得到充分证明https://stackoverflow.com/questions/34189756/warning-about-ssl-connection-when-connecting-to-mysql-database. 从过渡到时,我们就开始面临这个问题。建议的修复方法对我们有效,但我们有一个问题,我们不想更新Java源文件以进行更改,例如从 到 正如在ht

  • 我正在尝试使用JDBC连接到托管在云中的MongoDB。但是,认证失败。 以下是我的Java代码: 当我执行时,我得到以下异常: 我能够通过mLab web界面以相同的用户id和密码成功登录,并且工作正常。 但是,只有JDBC尝试失败。 有人能帮忙吗,这里有什么问题?

  • keytab和principl似乎都是正确的。我可以成功运行命令 有谁能进一步帮我。我被这个问题困扰了将近一个星期。如果需要,我可以提供更多的信息。

  • 高层目标是将NIFI连接到Oracle db服务--但只能使用Kerberos进行身份验证。 我们正在运行Apache NIFI1.9.2,并试图通过DBCPConnectionPool控制器服务连接到Oracle(使用驱动程序版本12.1)。我配置了一个KeytabCredentialService控制器服务,并在我的DBCP控制器服务中引用它。 我将Oracle驱动程序类名设置为“Oracle