MongoDB
 sql >> Database >  >> NoSQL >> MongoDB

Connettiti a più host mongo db ed esegui l'autenticazione utilizzando un database diverso nell'avvio primaverile

Secondo la documentazione il formato dell'URI della stringa di connessione è:

mongodb://[username:[email protected]]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options]]

Il /database parte è descritta come:

Hai impostato l'URI in questo modo:

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

Nei tuoi log possiamo vedere la riga:

Exception authenticating MongoCredential{mechanism=null, userName='content_rw', source='contenttest', password=<hidden>, mechanismProperties={}}

In MongoCredential.java il source è descritto come:

Quindi sembra che tu abbia impostato il database di autenticazione come /contenttest e non come:

spring.data.mongodb.authentication-database=admin

Penso che dovresti rimuovere il nome del database dall'URI e probabilmente spring.data.mongodb.authentication-database proprietà, perché admin il database viene utilizzato per impostazione predefinita.

Inoltre, guarda questo:

Questa riga dovrebbe essere interessante in termini di configurazione del database dell'applicazione:

spring.data.mongodb.database=test # Database name.