【问题标题】:MongoDB custom user roles - "user is not allowed(...)"MongoDB 自定义用户角色 - “用户不被允许(...)”
【发布时间】:2019-05-16 16:16:15
【问题描述】:

我在 MongoDB Atlas 上创建了一个免费层集群(它有 3 个分片),我希望我的 Node.js 应用程序使用特定用户连接到我在那里创建的数据库,该用户将被限制使用除这个应用程序的inteded。

所以一步一步来。

我创建了一个名为 test 的数据库。

我创建了一个角色 here - 我转到 Security -> MongoDB Roles -> Add New Custom Role 并将其全部提供给 Collection actions 和所有 Database actions and rolestest

是用户的时间,所以再次Security -> MongoDB Users -> Add New User,我为它分配了一个以前创建的角色,因此它只能访问test 数据库。所以现在我有 2 个用户 - atlasAdmin 和我创建的用户。

这就是问题所在,当我在我的应用程序中使用管理员用户进行连接时,.find().create() 它一直工作正常。对于具有自定义角色的用户,它的工作时间类似于 10 分钟/1 次连接(直到我关闭了我的节点应用程序的本地服务器),并且下次我收到“不允许用户执行操作 (.. .)”。

我尝试了一切,修改了我用来连接的字符串,更新了mongoose(我在我的应用程序中使用它),使用 mongodb shell 创建用户和自定义角色,但似乎没有任何效果。

但是:

  • 如果我有这个自定义用户,我的应用程序将它连接到数据库并且它可以工作,然后在下一个连接上它停止工作并且我去 here 并只需单击 UPDATE USER 而不更改任何内容(我只需单击用户旁边的edit,然后单击update),然后等待集群进行更改,它将再次为+/- 一个连接工作。

  • 如果我的应用使用管理员帐户,一切正常

有人遇到过类似的问题吗? Screenshot of the error 我也在想这可能是因为我尝试从应用程序连接 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);

【问题讨论】:

    标签: node.js mongodb mongoose connection mongodb-atlas


    【解决方案1】:

    我在 Atlas Free 层也遇到过这个问题,不仅在 NodeJS 上,在 Java 上也是如此

    目前,您可以尝试通过使用默认角色而不是自定义角色来缓解此问题

    在 MongoDB 用户选项卡上,单击用户上的“编辑”=> 添加默认权限

    Picture 1

    然后选择“readWrite”并在第一个字段中输入您的数据库名称,然后保存用户

    Picture 2

    或者,如果您想要数据库管理,添加另一个具有“dbAdmin”角色的字段

    Picture 3

    至少我是这样解决的。我希望这会有所帮助。

    附注:您也可以使用较短的连接字符串 (MongoDB+SRV),它仍然可以工作。

    【讨论】:

    • 最后,一些可行的方法,我厌倦了我失败的尝试让它真正发挥作用:D 谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-23
    • 2019-04-02
    • 1970-01-01
    • 2015-08-21
    • 2017-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多