[英]MongoDB custom user roles - "user is not allowed(...)"
我在 MongoDB Atlas 上创建了一个免费层集群(它有 3 个分片),我希望我的 Node.js 应用程序连接到我在那里创建的数据库,使用特定用户,该用户将被限制使用除指定数据库之外的任何其他数据库对于这个应用程序。
就这样一步步来。
我创建了一个名为test
的数据库。
我在这里创建一个角色 - 我去Security -> MongoDB Roles -> Add New Custom Role
,我给它所有的Collection actions
和所有的Database actions and roles
来test
用户的时间,所以再次Security -> MongoDB Users -> Add New User
,我为其分配一个先前创建的角色,因此它只能访问test
数据库。 所以现在我有 2 个用户 - atlasAdmin 和我创建的用户。
这就是问题所在,当我在我的应用程序中使用管理员用户进行连接时, .find()
或.create()
它始终可以正常工作。 对于具有自定义角色的用户,它的工作时间约为 10 分钟/1 个连接(直到我关闭了我的节点应用程序所在的本地服务器),下次我收到错误消息“不允许用户执行操作(.. .)”。
我尝试了一切,修改我用来连接的字符串,更新mongoose
(我在我的应用程序中使用它),使用 mongodb shell 创建用户和自定义角色,但似乎没有任何效果。
然而:
如果我有这个自定义用户,我的应用程序将它连接到数据库并且它可以工作,然后在下一个连接上它停止工作我去这里点击UPDATE USER
而不改变那里的任何东西(我只点击用户旁边的edit
和然后update
) 然后等待集群进行更改,它将再次为类似 +/- 一个连接工作。
如果我的应用程序使用管理员帐户,一切正常
任何人有类似的问题? 错误的屏幕截图我也在想这可能是因为我尝试从应用程序连接 mongo 的次数(我使用nodemon
所以每次我保存一个有更改的文件时,服务器重新启动,从而再次连接到数据库)但是我认为情况并非如此 - 如果是这样,为什么我能够让它与管理员用户一起使用?
我用来连接mongo的字符串:
// DATABASE SETUP
var dbURL = 'mongodb://[cluster0:port],[cluster1:port],[cluster2:port]/test?ssl=true&replicaSet=Cluster0-shard-0&authSource=admin&retryWrites=true';
var options = {
useNewUrlParser: true,
dbName: "test"
user: [login],
pass: [pass]
};
mongoose.connect(dbURL, options);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.