Spring Boot连接ScyllaDB认证失败及连接超时问题排查
解决Spring Boot连接ScyllaDB的认证配置问题
首先先处理依赖冗余问题:你引入的spring-boot-starter-data-cassandra已经包含了spring-data-cassandra和Datastax Java Driver核心依赖,单独声明后两者可能引发版本冲突,建议只保留org.springframework.boot:spring-boot-starter-data-cassandra:2.7.9,移除另外三个依赖,避免版本不兼容导致的连接异常。
针对认证配置无效的问题,提供两种可靠的配置方式:
方式一:重写getSessionBuilderConfigurer注入认证信息
在你的ScyllaDBConfig类中,重写getSessionBuilderConfigurer方法手动添加认证逻辑,确保配置生效:
@Configuration @EnableCassandraRepositories(basePackages = { "com.test.model.scylladb"}) public class ScyllaDBConfig extends AbstractCassandraConfiguration { @Override protected String getKeyspaceName() { return "test"; } @Override protected String getContactPoints() { return "1.2.3.4"; } @Override protected int getPort() { return 9042; } @Override protected SessionBuilderConfigurer getSessionBuilderConfigurer() { return builder -> builder.withAuthCredentials("user", "password"); } }
方式二:用配置文件直接配置(更简洁)
如果不想编写配置类,可直接在application.yml或application.properties中添加连接参数,Spring Boot会自动处理认证:
spring: data: cassandra: keyspace-name: test contact-points: 1.2.3.4 port: 9042 username: user password: password
额外排查点
连接失败除了认证配置问题,还可能是以下原因:
- ScyllaDB是否开启密码认证:检查
scylla.yaml中的authenticator配置是否为PasswordAuthenticator,默认是AllowAllAuthenticator - 网络连通性:确认服务器
1.2.3.4的9042端口是否开放,防火墙是否允许你的应用服务器访问 - 权限验证:确认ScyllaDB中的用户拥有访问
testkeyspace的权限 - 版本兼容性:Spring Boot 2.7.x适配的Datastax Driver版本为4.15.x左右,若移除冗余依赖后仍有问题,可尝试通过starter管理驱动版本
内容的提问来源于stack exchange,提问作者user2221654
相关产品推荐
相关产品推荐

