com.mongodb.MongoQueryException: запрос не выполнен с кодом ошибки 13
Мы получаем com.mongodb.MongoQueryException
:
> Query failed with error code 13 while connecting to MongDB trhough
> spring-data.
MongoDB version 3.x
Spring 4.1.6
, mongo-java-driver - 3.0.2
, spring-data-commons - 1.10.0.RELEASE
, spring-data-mongodb - 1.7.0.RELEASE
Невозможно выполнить запрос поиска для коллекции.
Я могу просматривать коллекцию в GUI, используя те же учетные данные.
Любая помощь будет оценена.
Вот полное исключение:
> org.springframework.data.mongodb.UncategorizedMongoDbException: Query
> failed with error code 13 and error message 'not authorized for query
> on <db.table>' on server xxx; nested exception is
> com.mongodb.MongoQueryException: Query failed with error code 13 and
> error message 'not authorized for query on db.table on server xxx
> at org.springframework.data.mongodb.core.MongoExceptionTranslator.translateExceptionIfPossible(MongoExceptionTranslator.java:96)
> at org.springframework.data.mongodb.core.MongoTemplate.potentiallyConvertRuntimeException(MongoTemplate.java:2002)
> at org.springframework.data.mongodb.core.MongoTemplate.executeFindMultiInternal(MongoTemplate.java:1885)
1 ответ
Проверьте Mongo XSD на наличие драйверов Java 2.6 и 3.0, они отличаются - кажется, вы все еще используете старый способ аутентификации.
<mongo:db-factory dbname="${mongo.database}" username="${mongo.user}"
password="${mongo.pwd}" mongo-ref="mongo"/>
Это работает только с драйвером Java 2.6, но не с драйвером Java 3.0.
Использовать этот mongo-client-option
с атрибутом учетных данных.
<mongo:mongo-client replica-set="${mongo.replica-set}" credentials="you need to put here user/password with specific DB">
Список с разделителями-запятыми username:password@database
записи для использования для аутентификации. Прикрепление ? uri.authMechanism
позволяет указать механизм проверки подлинности. Если учетные данные, которые вы пытаетесь передать, содержат саму запятую, заключите ее в одинарные кавычки: '…'
,