com.mongodb.MongoQueryException:查询失败,错误代码为13

时间:2015-06-04 04:33:25

标签: mongodb unauthorized

我们正在com.mongodb.MongoQueryException

> Query failed with error code 13 while connecting to MongDB trhough
> spring-data.


MongoDB version 3.x

Spring 4.1.6mongo-java-driver - 3.0.2spring-data-commons - 1.10.0.RELEASEspring-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 个答案:

答案 0 :(得分:0)

检查mongo XSD for 2.6 vs 3.0 java驱动程序,它们是不同的 - 似乎你仍然使用旧的方式进行身份验证。

<mongo:db-factory dbname="${mongo.database}" username="${mongo.user}"
                  password="${mongo.pwd}" mongo-ref="mongo"/>

这仅适用于2.6 java驱动程序,而不适用于3.0 java驱动程序。

将此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允许指定身份验证质询机制。如果您尝试传递的凭据本身包含逗号,请使用单引号引用它:'…'