1

我正在尝试使用 cdata jdbc 连接器连接到 Cassandra。但是,我找不到如何在连接 url 中提供用户名和密码。这是我的java代码。

package com.dremio.exec.store.jdbc.conf;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class TestConnection {

    public static void main(String[] args) throws Exception {

        Connection con = null;
        Class.forName("org.apache.cassandra.cql.jdbc.CassandraDriver");
        con = DriverManager.getConnection("jdbc:cassandra://localhost:9160");

        String query = "SELECT * FROM emp";

        Statement stmt = con.createStatement();
        ResultSet result = stmt.executeQuery(query);

        while (result.next()) {
            System.out.println(result.getString("emp_id"));
            System.out.println(result.getString("emp_name"));
            System.out.println(result.getString("emp_city"));
        }
        con.close();
    }
}

目前,我提供的 url 没有身份验证。我如何在那里提供用户名和密码。

4

1 回答 1

1

CData 的(较差的)文档用户密码列为可添加到 JDBC 连接字符串的可用属性。您可以使用您的用户名和密码添加这些以进行身份​​验证:

con = DriverManager.getConnection(
        "jdbc:cassandra://localhost:9160;User=ayush;Password=yourpwd");

您还可以将它们添加为属性,如从代码连接示例中详述的那样:

Properties prop = new Properties();
prop.setProperty("Port","9042");
prop.setProperty("Server","127.0.0.1");
prop.setProperty("User","ayush");
prop.setProperty("Password","yourpwd");
 
Connection conn = DriverManager.getConnection("jdbc:cassandra:",prop);

此外,除非您使用旧的 Cassandra 集群或启用 Thrift 的 3.x 集群,否则 9160 将无法工作。事实上,Thrift 项目已经有几年没有拉请求了,所以我建议远离它并在 9042 上使用本机二进制协议。

于 2021-05-17T13:50:09.233 回答