J'obtiens cette exception de socket d'erreur déclenchée par cette connexion lors de l'exécution de mon application.
INFO 5231 --- [nio-8087-exec-1] org.mongodb.driver.connection: Closed connection [connectionId{localValue:2}] to 192.168.0.2:27017 because there was a socket exception raised by this connection.** org.springframework.data.mongodb.UncategorizedMongoDbException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='campbell', password=<hidden>, mechanismProperties={}}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='campbell', password=<hidden>, mechanismProperties={}} at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:138) at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2756) at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:2666) at org.springframework.data.mongodb.core.MongoTemplate.doFind(MongoTemplate.java:2409) at org.springframework.data.mongodb.core.ExecutableFindOperationSupport$ExecutableFindSupport.doFind(ExecutableFindOperationSupport.java:214) at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:490) at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:139) at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:92) at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:74) at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:343) at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:408) at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:791) at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1417) at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) Caused by: com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='campbell', password=<hidden>, mechanismProperties={}} Caused by: com.mongodb.MongoCommandException: Command failed with error 18 (AuthenticationFailed): 'Authentication failed.' on server 192.168.0.2:27017. The full response is { "ok" : 0.0, "errmsg" : "Authentication failed.", "code" : 18, "codeName" : "AuthenticationFailed" } **I have declared properties in application properties-** spring.data.mongodb.database=dbname spring.data.mongodb.username=admin spring.data.mongodb.password=******* spring.data.mongodb.port=27017 spring.data.mongodb.host=192.168.0.2
Les informations de connexion sont correctes. J'obtiens toujours cette erreur. Exception authentifiant MongoCredential également Je reçois une exception Mongo Db non classée
Sil te plait aide moi!
3 Réponses :
Selon # 46934427 , la définition de spring.data.mongodb.authentication-database=admin
probablement votre problème.
La base de données par défaut de MongoDB est test
, par conséquent, il est probable que vous tentiez de vous authentifier par rapport à la base de données de test
. Le passage à la base de données d' admin
(l'endroit commun pour les utilisateurs à créer) peut résoudre votre problème.
Tu as fait ma journée
Cela n'a pas fonctionné pour moi, mais ce qui a fait était d'ajouter l'option ci-dessous à la chaîne de connexion: authSource=<auth_db_name>
Tu as sauvé ma journée. Sucré..!
Dans mon cas, c'était exactement le contraire. Après l'avoir retiré, cela a fonctionné.
@NachoMezzadra cela signifie que votre utilisateur ne fait pas partie de la base de données d'administration, mais d'une autre base de données.
Add user admin into your database. Open installed folder and open the mongo.exe file and run below command : use admin db.createUser( { user: "admin", pwd: "admin", roles: [ { role: "userAdminAnyDatabase", db: "admin" }, { role: "dbAdminAnyDatabase", db: "admin" }, { role: "readWriteAnyDatabase", db: "admin" } ] } )
Vous pouvez essayer ceci:
spring.data.mongodb.uri=mongodb://user:passwod@localhost/test?authSource=admin
Avez-vous spécifié une
authenticationDatabase
? Il est probable que vous vous authentifiez sur une base de données différente pour ce qui est de l'utilisateur. Consultez stackoverflow.com/questions/46934427/...Après avoir ajouté cette ligne - spring.data.mongodb.authentication-database = admin dans les propriétés de l'application. Maintenant, cela fonctionne correctement. Je vous remercie!
C'est génial! J'ai ajouté une réponse pour aider les futurs utilisateurs SO. Veuillez accepter ceci comme la bonne réponse si vous pensez que cela vous a aidé. Merci.