gpt4 book ai didi

authentication - 无法在启用密码身份验证的情况下将 java 客户端连接到 cassandra

转载 作者:行者123 更新时间:2023-12-04 17:46:01 27 4
gpt4 key购买 nike

我的 macbook 上默认安装了 Datastax 企业版。我能够创建我的 key 空间并设置我的所有应用程序,包括使用 solr。

我正在尝试制定一组步骤来为我们的开发集群打开密码身份验证。

到目前为止,我已经更新了 /usr/local/dse/resources/cassandra/conf/cassandra.yaml并更改了以下属性:

authenticator: PasswordAuthenticator
authorizer: CassandraAuthorizer

我重新启动了节点,可以使用 cqlsh 登录和查询我的 key 空间:
cqlsh -u cassandra -p cassandra

此时我尝试在 session 构建器上设置凭据:
主机是: cassandra.host=localhost
Session session = keyspaceToSessionMap.get(keyspace);
if( session == null){
Cluster cluster = Cluster.builder().addContactPoints(hosts)
.withCredentials(username, password)
//.withSSL()
.build();
session = cluster.connect(keyspace);
keyspaceToSessionMap.put(keyspace,session);
}

但是,我无法成功连接。所以我添加了一个新用户,并且能够通过 cqlsh 再次登录,但仍然无法连接 Java 驱动程序。
cqlsh -u username -p password
Connected to LocalCluster at 127.0.0.1:9042.
[cqlsh 5.0.1 | Cassandra 2.1.8.689 | DSE 4.7.3 | CQL spec 3.2.0 | Native protocol v3]

我正在使用 'com.datastax.cassandra:cassandra-driver-dse:2.1.9'通过 gradle 驱动程序。

我总是得到以下堆栈跟踪,通过调试可以看到用户名和密码设置正确:
Caused by: com.datastax.driver.core.exceptions.AuthenticationException: Authentication error on host localhost/127.0.0.1:9042: Username and/or password are incorrect
at com.datastax.driver.core.Connection$8.apply(Connection.java:376)
at com.datastax.driver.core.Connection$8.apply(Connection.java:346)

这看起来应该很简单,但我很难过。

我与 cassandra 驱动程序相关的依赖关系图包含以下内容:
+--- com.datastax.cassandra:cassandra-driver-dse:2.1.9
| \--- com.datastax.cassandra:cassandra-driver-core:2.1.9 -> 2.1.8
| +--- io.netty:netty-handler:4.0.27.Final
| | +--- io.netty:netty-buffer:4.0.27.Final
| | | \--- io.netty:netty-common:4.0.27.Final
| | +--- io.netty:netty-transport:4.0.27.Final
| | | \--- io.netty:netty-buffer:4.0.27.Final (*)
| | \--- io.netty:netty-codec:4.0.27.Final
| | \--- io.netty:netty-transport:4.0.27.Final (*)
| +--- com.google.guava:guava:14.0.1 -> 18.0
| \--- com.codahale.metrics:metrics-core:3.0.2
| \--- org.slf4j:slf4j-api:1.7.5 -> 1.7.12

我创建了以下通过的测试。

Cluster cluster = Cluster.builder().addContactPoints("localhost")
.withCredentials("username", "password")
//.withSSL()
.build();
Session session = cluster.connect("keyspace");
Assert.assertNotNull(session);

我能分辨出两者之间的唯一区别是“localhost”现在是一个常量而不是大小为 1 的数组。

最佳答案

发现我有一个尾随空格,这是根本原因。

Cluster cluster = Cluster.builder().addContactPoints(hosts)
.withCredentials(username.trim(), password.trim())
//.withSSL()
.build();

关于authentication - 无法在启用密码身份验证的情况下将 java 客户端连接到 cassandra,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34711811/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com