问题描述
我使用 Apache Common DBCP 库中的“BasicDataSource”类和 DataStax 驱动程序“com.simba.cassandra.jdbc42.Driver”连接到带有 Java 的 Cassandra 数据库。当 Cassandra 配置了“身份验证器” 设置为“AllowAllAuthenticator”,我可以连接到数据库。但是,当我启用“PasswordAuthenticator”并在“BasicDataSource”对象中设置用户名/密码时,我无法连接并收到异常“主机/IP 地址:端口:主机/IP 地址:端口上的身份验证错误,需要身份验证,但没有身份验证器”在集群配置中找到。”。建立安全连接需要什么?
解决方法
我已经回答了我自己的问题。对于遇到相同问题的任何人,解决方案是在 JDBC 连接字符串中包含选项“AuthMech=1”,因为经过身份验证的连接需要它。以下来自《Simba Cassandra JDBC Driver with SQL Connector》安装配置指南:
“认证机制
此属性指定驱动程序是连接到 Cassandra 还是 Astra 数据库, 以及驱动程序是否对连接进行身份验证。
- 0:驱动程序连接到 Cassandra 数据库而不验证 连接。
- 1:驱动程序连接到 Cassandra 数据库,并验证 使用用户名和密码进行连接。
- 2:驱动程序连接到 Astra 数据库,并验证连接 使用用户名、密码和安全连接包。”
参考:https://docs.datastax.com/en/driver-matrix/doc/latestSimbaCassJDBCDriver.html(第 31 页)