我正在使用MongoDB Atlas,最近我开始在我的MongoDB副本上收到此错误:
不允许用户对 [mydb.system.indexes] 执行操作 [find]
实际上什么都没有改变,所以我想知道什么可能是一个问题。用户在mydb
上具有readWrite
角色,从文档中看,它应该有权执行此操作。另外,我尝试将用户更改为具有任何权限的管理员用户,但仍然收到此错误。有趣的是,mydb
中不存在system
集合,但 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
我正在使用带有版本 3.6.3
的 mongo java 驱动程序的 Spring Boot 2.0.1.RELEASE
。Mongo副本的版本是3.4.14
。知道发生了什么以及如何解决这个问题吗?升级用户角色在这里无济于事。
MongoDB Atlas禁止直接调用某些system.
集合,并指定在文档中应该使用db.<COLLECTION>.getIndexes()
。就我而言,MongoBee库正在拨打system.indexes
电话并导致问题。有关更多详细信息,请参阅我的答案 这里.