MongoDB Atlas : user is not allowed to do action find on system. 索引

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

我正在使用 MongoDB Atlas,我最近开始在我的 MongoDB 副本上遇到这个错误:

user is not allowed to do action [find] on [mydb.system.indexes]

什么都没有真正改变,所以我想知道可能是什么问题。用户在 mydbdocs 上具有 readWrite 角色看起来它应该有权这样做。另外,我尝试将用户更改为具有任何权限的管理员用户,但仍然出现此错误。有趣的是 system 集合在 mydb 中不存在,但是 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 Boot 2.0.1.RELEASE3.6.3 版本的 mongo java 驱动程序。 Mongo 副本的版本是 3.4.14。知道发生了什么以及如何解决这个问题吗?升级用户角色在这里没有帮助。

最佳答案

MongoDB Atlas 禁止直接调用一些 system.集合,他们在 the doc 中指定和 db.<COLLECTION>.getIndexes()应该改用。就我而言 MongoBee图书馆正在制作system.indexes调用并导致问题。看我的回答here了解更多详情。

关于MongoDB Atlas : user is not allowed to do action find on system. 索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49958635/

相关文章:

mongodb条件查询主键_id?

java - mongodb 3.2 优化管道查询

MongoDB 文档(投影与查询)

node.js - 使用nodejs处理mongoDB的问题(使用express和handlebars)

JSON 对象映射到 mongoose schema _id

java - 如何使用 Spring Data 从 Mongo 文档的数组字段中仅获取匹配结果

java - Mongo Java 客户端 : How can I connect with SSL enabled but no certificate?

java - 我的 MongoDB DAO 是否应该请求唯一的数据库对象?

java - 具有索引的字段达到排序限制

php - 不支持的驱动程序 [mongodb] Laravel