我正在使用 MongoDB Atlas,我最近开始在我的 MongoDB 副本上遇到这个错误:
user is not allowed to do action [find] on [mydb.system.indexes]
什么都没有真正改变,所以我想知道可能是什么问题。用户在 mydb
和 docs 上具有 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.RELEASE
和 3.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/