【问题标题】:MongoDB: Couldn't add user - not authorized (CloudFoundry)MongoDB:无法添加用户 - 未授权 (CloudFoundry)
【发布时间】:2019-02-11 01:39:52
【问题描述】:

我有一个 MongoDB(服务计划:小),我想创建一个额外的用户,但我似乎没有这样做的必要权限。

db.createUser({ user: "whateverusername" , pwd: "whateverpassword", roles: ["userAdminAnyDatabase", "dbAdminAnyDatabase", "readWriteAnyDatabase"]})

执行脚本失败。

错误:无法添加用户:未授权 XXXXXXX 执行 命令{ createUser:“whateverusername”,密码:“xxx”,角色:[ “userAdminAnyDatabase”、“dbAdminAnyDatabase”、“readWriteAnyDatabase” ], digestPassword: false, writeConcern: { w: "majority", wtimeout: 600000.0 } } : _getErrorWithCode@src/mongo/shell/utils.js:25:13 DB.prototype.createUser@src/mongo/shell/db.js:1290:15 @(shell):1:1

我无法列出用户:

db.system.users.find();

错误:错误:{“ok”:0,“errmsg”:“未在 XXXXXXX 上授权 执行命令 { find: \"system.users\", filter: {} }", "code" : 13, “代号”:“未经授权”}

这个限制是有意的吗?有没有办法获得 readWriteAnyDatabase 角色?难道我做错了什么?

非常感谢您提供的任何帮助!

【问题讨论】:

    标签: mongodb cloud-foundry swisscomdev


    【解决方案1】:

    您需要通过 CloudFoundry 添加用户。将服务绑定到应用程序,这将创建一个供该应用程序使用的用户,或者创建一个用于所有其他目的的服务密钥(主要用于人类需要与数据库交互的情况)。

    以下是有关如何将服务绑定到应用程序的文档:https://docs.developer.swisscom.com/devguide/services/application-binding.html

    它的教程:https://docs.developer.swisscom.com/tutorial-go/bind-service.html

    创建服务密钥的方法如下:https://docs.developer.swisscom.com/devguide/services/service-keys.html

    【讨论】:

    • 绑定服务按预期工作,但我通过 MongoDB 服务绑定获得的用户是没有角色 readWriteAnyDatabase 的用户,我需要一个具有此角色的用户。
    • @AndrásTornai MongoDB 和 Swisscom 应用云上的 MongoDB Enterprise 服务实例仅授予对单个数据库的访问权限,因此角色 readWriteAnyDatabase 不可用。
    猜你喜欢
    • 2014-07-19
    • 1970-01-01
    • 2017-02-23
    • 1970-01-01
    • 2015-03-03
    • 1970-01-01
    • 2021-09-22
    • 2012-09-30
    相关资源
    最近更新 更多