我有一个Jhipster Spring启动项目。最近,我从 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 DB版本:3.4
Jars and It的版本名称:“ mongobee”,版本:“ 0.10”名称:“ mongo-java-driver”,版本:“ 3.4.2”
@Neil Lunn我正在使用的userId是管理员的userId,并且该连接的读写操作是通过Shell或Robo3T(mongo客户端)进行的
与MongoDB支持团队讨论后,MongoDB 3.0拒绝了对system.indexes集合的直接访问,该集合以前曾用于列出数据库中的所有索引。应用程序应db.<COLLECTION>.getIndexes()改为使用。
system.indexes
db.<COLLECTION>.getIndexes()
从MongoDB Atlas文档可以看出,他们可能禁止调用system.集合:
system.
(可选)对于read和readWrite角色,您还可以指定一个集合。如果未为read和readWrite指定一个集合,则该角色将应用于数据库中的所有集合(某些系统集合除外)。
从堆栈跟踪中可以看出MongoBee正在尝试进行此调用,因此现在是库问题,应该对其进行更新。
更新 :为了解决问题,直到MongoBee发布了新版本:
git clone git@github.com:mongobee/mongobee.git
cd mongobee
git fetch origin pull/87/head:mongobee-atlas
git checkout mongobee-atlas
mvn clean install
/target
/.m2