Исключение аутентификации MongoCredential и Uncategorized Mongo Db Exception

Я получаю это исключение сокета ошибки, вызванное этим соединением при запуске моего приложения.

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

Учетные данные для входа верны, но я получаю эту ошибку. Исключение, аутентифицирующее MongoCredential, также я получаю Uncategorized Mongo Db Exception

Пожалуйста, помогите мне!

Вы указали authenticationDatabase? Скорее всего, вы выполняете аутентификацию в другой базе данных, в которой находится пользователь. Проверьте stackoverflow.com/questions/46934427/…

Robert Seaman 13.03.2019 09:51

После добавления этой строчки - spring.data.mongodb.authentication-база данных = администратор в свойствах приложения. Теперь он работает правильно. Спасибо!

Sonal 13.03.2019 10:49

Замечательно! Я добавил ответ, чтобы помочь будущим пользователям SO. Пожалуйста, примите это как правильный ответ, если вы чувствуете, что это помогло вам. Спасибо.

Robert Seaman 13.03.2019 10:58
Использование JavaScript и MongoDB
Использование JavaScript и MongoDB
Сегодня я собираюсь вкратце рассказать о прототипах в JavaScript, а также представить и объяснить вам работу с базой данных MongoDB.
21
3
33 472
4
Перейти к ответу Данный вопрос помечен как решенный

Ответы 4

Ответ принят как подходящий

Согласно #46934427, настройка spring.data.mongodb.authentication-database=admin, вероятно, решит вашу проблему.

База данных по умолчанию в MongoDB — test, поэтому, вероятно, вы пытаетесь пройти аутентификацию в базе данных test. Переключение на базу данных admin (общее место для создания пользователей) может решить вашу проблему.

Вы сделали мой день

David 11.04.2019 17:26

У меня это не сработало, но я добавил следующую опцию в строку подключения: authSource=<auth_db_name>

David J Barnes 30.12.2019 13:33

Вы спасли мой день. Милая..!

Ajay Kumar 13.03.2020 11:57

В моем случае было с точностью до наоборот. После удаления заработало.

Nacho Mezzadra 13.08.2020 21:07

@NachoMezzadra означает, что ваш пользователь не является частью базы данных администратора, а является частью другой базы данных.

Robert Seaman 14.08.2020 01:02

я могу использовать следующую команду для прямого входа в систему, но не через application.yml в springboot.. cmd: mongo --port 27017 -u "user" --authenticationDatabase "piggymetrics" -p while springboot: spring.data.mongodb.authentication -database=piggymetrics

Winnie-c 14.03.2021 16:13
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" } ]
}
)

Вы можете попробовать это:

spring.data.mongodb.uri=mongodb://user:passwod@localhost/test?authSource=admin

Это решило для меня!

FilippoG 28.10.2021 12:15

Поместите эту конфигурацию в файл свойств вашего приложения:

spring.data.mongodb.host= YOUR_HOST like 192.168.x.x
spring.data.mongodb.port=27017
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.username=admin
spring.data.mongodb.password=PASSWORD
spring.data.mongodb.database=DB_NAME

Другие вопросы по теме