我有一个 Jhipster Spring Boot 项目。最近我从 mlabs 独立沙箱转移到 Atlas 集群沙箱 M0 免费层副本集。它甚至可以工作,我已经对它进行了一些数据库操作。但是现在由于某种原因然后出现了读取权限错误

Error creating bean with name 'mongobee' defined in class path resource [DatabaseConfiguration.class]: Invocation of init method failed; nested exception is com.mongodb.MongoQueryException: Query failed with error code 8000 and error message 'user is not allowed to do action [find] on [test.system.indexes]' on server ********-shard-00-01-mfwhq.mongodb.net:27017

你可以在这里看到完整的堆栈 https://pastebin.com/kaxcr7VS

我搜索了高低,我能找到的只是 M0 层用户没有权限覆盖我没有做的管理数据库。

即使现在与 Mlabs DB 的连接工作正常,但在 Atlas DB M0 层上存在此问题。

Mongo 数据库版本:3.4

jar 和它的版本
名称:'mongobee',版本:'0.10'
名称:'mongo-java-driver',版本:'3.4.2'

@尼尔伦
我用来连接的用户 ID 是管理员的用户 ID,连接读写通过 shell 或 Robo3T(mongo 客户端)进行

最佳答案

在与 MongoDB 支持团队讨论后,MongoDB 3.0 弃用了对 system.indexes 集合的直接访问,该集合以前用于列出数据库中的所有索引。应用程序应改用 db.<COLLECTION>.getIndexes()

MongoDB Atlas docs 可以看出他们可能禁止调用 system. 集合:



从堆栈跟踪可以看出 MongoBee 正在尝试进行此调用,因此现在是库问题,应该对其进行更新。

更新 :
为了在 MongoBee 发布新版本之前修复问题:

  • 获取 MongoBee git clone [email protected]:mongobee/mongobee.git , cd mongobee
  • 的最新源码
  • 获取拉取请求 git fetch origin pull/87/head:mongobee-atlas
  • 结帐 git checkout mongobee-atlas
  • 安装 MongoBee jar mvn clean install
  • /target 文件夹或本地 /.m2
  • 获取编译好的 jar
  • 将 jar 用作项目的依赖项
  • 关于mongodb - 连接后,mongobee 在 Atlas 集群上读取 DBname.system.indexes 失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49974594/

    10-10 12:45