MongoDB Atlas:不允许用户在system.indexes上执行操作查找

时间:2018-04-21 17:53:04

标签: mongodb spring-data-mongodb mongo-java mongo-java-driver mongodb-atlas

我使用的是MongoDB Atlas,我最近开始在我的MongoDB副本上出现此错误:

  

不允许用户在[mydb.system.indexes]

上执行操作[find]

没有什么改变,所以我想知道什么是问题。用户在readWrite上有mydb个角色,而docs的用户看起来应该有权这样做。此外,我已尝试将用户更改为具有任何权限的管理员用户,但仍然出现此错误。有趣的是,systemmydb集合并不存在,但Spring Data会尝试查询并收到此错误。

以下是来自mongo的完整日志:

Error: error: {
    "ok" : 0,
    "errmsg" : "user is not allowed to do action [find] on [mydb.system.indexes]",
    "code" : 8000,
    "codeName" : "AtlasError"
}

MongoDB连接URI如下所示:

spring.data.mongodb.uri=mongodb+srv://[USER]:[PASSWORD]@[MONGO_URL].mongodb.net/mydb

我使用Spring 2.0.1.RELEASE和版本为3.6.3的mongo java驱动程序。 Mongo副本的版本为3.4.14。知道发生了什么以及如何解决这个问题?升级用户角色对此没有帮助。

1 个答案:

答案 0 :(得分:2)

MongoDB Atlas禁止直接调用某些system.个集合,并指定应使用the docdb.<COLLECTION>.getIndexes()代替。在我的情况下,MongoBee库正在进行system.indexes调用并导致问题。有关详细信息,请参阅我的回答here