我有一个 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 发布新版本之前修复问题:
git clone [email protected]:mongobee/mongobee.git
, cd mongobee
git fetch origin pull/87/head:mongobee-atlas
git checkout mongobee-atlas
mvn clean install
/target
文件夹或本地 /.m2
关于mongodb - 连接后,mongobee 在 Atlas 集群上读取 DBname.system.indexes 失败,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49974594/