【发布时间】:2018-10-02 04:10:46
【问题描述】:
我正在使用 MongoDB Atlas,最近我的 MongoDB 副本开始出现此错误:
不允许用户对 [mydb.system.indexes] 执行操作 [查找]
什么都没有真正改变,所以我想知道可能是什么问题。用户在mydb 上拥有readWrite 角色,从docs 看来,它应该有权这样做。另外,我尝试将用户更改为具有任何权限的管理员用户,但仍然出现此错误。有趣的是 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。知道发生了什么以及如何解决这个问题吗?升级用户角色在这里没有帮助。
【问题讨论】:
-
system在 every mongodb 数据库命名空间中创建。只是当里面什么都没有的时候它就不存在了。错误信息可能更清楚,但基本上意味着您正在验证的用户没有阅读此信息的权限。从Built In Roles 这应该分配给继承read角色的用户,并且大多数应用程序的通用角色通常应该是readWrite。如果您的用户没有这些角色(或继承自),则帐户设置不正确。
标签: mongodb spring-data-mongodb mongo-java mongo-java-driver mongodb-atlas