2

我在我的应用程序上使用 MongoDB,当我尝试使用服务连接器直接访问数据库时,我能够连接,但后来我得到:

Error: error: {
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { *any command*}",
    "code" : 13
}

这适用于任何查询或命令。

有没有办法更改授权或访问我的 MongoDB 的数据

PS:我的 MongoDB 在教程中被绑定:https ://docs.developer.swisscom.com/tutorial-python/bind-service.html

4

2 回答 2

4

Sandro Mathys的回答是正确且有帮助的,我想澄清/简化一点。

服务代理授予您角色并为您创建一个随机名称的dbOwner数据库。这是在cf create-service过程中完成的。

数据库所有者可以对数据库执行任何管理操作。此角色结合了 readWrite、dbAdmin 和 userAdmin 角色授予的权限。

您对admin数据库没有权限。该admin数据库仅适用于 Swisscom 运营商。请使用带有随机数据库名称mongo的参数登录 shell 。--authenticationDatabasecf env

指定在其中创建用户的数据库。请参阅身份验证数据库。

如果您没有为 --authenticationDatabase 指定值,mongo 将使用连接字符串中指定的数据库。

于 2017-07-27T07:12:16.337 回答
4

看起来您正试图在您的用户未被授权的管理数据库上执行命令。您可以在凭据 (key mongodb.credentials.database) 中找到您的用户被授权的正确数据库,但理想情况下,您使用提供的 URI ( mongodb.credentials.uri) 进行连接,它将自动将您连接到正确的数据库。

您可以查看您链接的教程中的 Python 示例,以了解如何正确访问和使用这些凭据。

于 2017-07-26T10:55:05.210 回答