2017-07-25 40 views
2
执行使用服务连接器的任何命令我使用的是MangoDb我的应用程序

,当我尝试直接使用服务连接器来访问数据库,我能够连接,但然后我得到:不autorized对MangoDB

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

和这在任何查询或命令。

有没有办法来改变授权或访问我MangoDb的数据

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

+0

请格式化代码求助[这里](https://stackoverflow.com/help/privileges/comment),添加所有对应标签的问题(这将更好地匹配上的标签在搜索) – Sergii

回答

4

它看起来像你想执行的命令admin数据库,您的用户未被授权。您可以在凭证(密钥mongodb.credentials.database)中找到授权用户的正确数据库,但最好使用提供的URI(mongodb.credentials.uri)进行连接,该URI将自动将您连接到正确的数据库。

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

4

answer from Sandro Mathys是正确和有帮助的,我想澄清/简单一点。

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

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

admin数据库没有任何权限。 admin数据库仅适用于Swisscom运营商。请使用mongo shell登录,参数--authenticationDatabase的随机数据库名称为cf env

指定创建用户的数据库。参见认证数据库。

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

+0

谢谢。该程序正在工作。我注意到,通过输入'use admin'我正在切换数据库。然而,在开始时它仍然没有工作,但我生成了一个新的service_key,现在它运行良好。 再次感谢 – Lggoch