问题描述
我正在使用 DataStax Java 驱动程序版本 3.3.0 运行 Java 应用程序,并且我试图在运行时更改 Cassandra 用户和密码。根据 this issue 通过在此对象中调用 setUser
和 setPassword
,它应该将其重用于以后对数据库的调用,所以我在代码中做了类似
PlainTextAuthProvider authProvider = (PlainTextAuthProvider) cluster.getConfiguration().getProtocolOptions().getAuthProvider();
authProvider.setUsername(user);
authProvider.setPassword(pwd);
但即使在此更改之后,我发现它仍然使用我在启动时设置的用户/密码。
This docu 表示在版本 > 4.x 中,您可以在运行时强制重新加载配置。
所以我的问题是,有没有办法强制所有对 Cassandra 的新调用开始使用 3.x 版中通过 PlainTextAuthProvider
提供的新用户和通行证?
额外:我这样做是为了尝试在 Vault 密码过期时轮换它们并相应地更新驱动程序。类似于此 post for relational DB accessed by Spring Boot but on Cassandra
中描述的内容解决方法
这个问题也在 https://community.datastax.com/questions/11846/ 上被问到,我在这里重新发布我的回答:
我不熟悉此 API,但我认为凭据仅用于设置凭据后发起的新连接。我怀疑它不适用于继续使用旧凭据的现有连接。
我将联系 DataStax 的驱动程序开发人员,要么让他们直接回复,要么更新我的答案。干杯!