从春季启动Mongodb Replicaset身份验证失败

问题描述

我有3个实例mongodb副本集,其中包括3个不同ec2实例中的1个仲裁器。从mongo控制台,我可以连接到副本集。 但是,当我尝试在主要ec2实例中构建/部署我的dockerized spring boot插件时,它给出了以下异常

Caused by: org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,userName='<usrName>',source='<source>',password=<hidden>,mechanismProperties=<hidden>}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,mechanismProperties=<hidden>}
Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1,mechanismProperties=<hidden>}
Caused by: com.mongodb.MongoCommandException: Command Failed with error 18 (AuthenticationFailed): 'Authentication Failed.' on server <Primary-Host>:27017. The full response is {"operationTime": {"$timestamp": {"t": 1601217500,"i": 1}},"ok": 0.0,"errmsg": "Authentication Failed.","code": 18,"codeName": "AuthenticationFailed","$clusterTime": {"clusterTime": {"$timestamp": {"t": 1601217500,"signature": {"hash": {"$binary": {"base64": "KSwBAZHnhcqmjdsAy9HHVB8+yZQ=","subType": "00"}},"keyId": 6876114453302083588}}}

连接到副本集时使用的Spring数据mongodb属性

spring.data.mongodb.uri=mongodb://<usrName>:<password>@<host-primary>:27017,<host-secondary>:27017/<dbname>?<replicaset name>
spring.data.mongodb.auto-index-creation = true

当我尝试使用以下属性(即单节点连接)进行构建/部署时,此操作会成功

spring.data.mongodb.host=<Primary-Host>
spring.data.mongodb.port=27017
spring.data.mongodb.database=<database name>
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=<user name>
spring.data.mongodb.password=<password>
spring.data.mongodb.auto-index-creation = true

解决方法

usernamepassword是否包含@,冒号,斜杠/或百分号%字符?

如果是,请检查您是否使用了正确的编码。

也尝试像这样在uri中添加authSource

?authSource=admin&replicaSet=myRepl