2017-07-25 39 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