MongoDB
 sql >> Base de Dados >  >> NoSQL >> MongoDB

Conecte-se a vários hosts de banco de dados mongo e autentique usando um banco de dados diferente na inicialização por mola


De acordo com a documentação o formato URI da cadeia de conexão é:
mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

O /database parte é descrita como:

Você configurou o URI assim:
spring.data.mongodb.uri = mongodb://content_rw:<secret password>@a.mongo.db:27017,b.mongo.db:27017,c.mongo.db:27017/contenttest?wtimeoutMS=300&connectTimeoutMS=500&socketTimeoutMS=200

Em seus logs podemos ver a linha:
Exception authenticating MongoCredential{mechanism=null, userName='content_rw', source='contenttest', password=<hidden>, mechanismProperties={}}

Em MongoCredential.java a source é descrito como:

Parece que você configurou o banco de dados de autenticação como /contenttest e não como:
spring.data.mongodb.authentication-database=admin

Acho que você deve remover o nome do banco de dados do URI e provavelmente spring.data.mongodb.authentication-database propriedade, porque admin banco de dados é usado por padrão.

Além disso, veja isso:



Esta linha deve ser interessante em termos de configuração do banco de dados do aplicativo:
spring.data.mongodb.database=test # Database name.