2012-04-17 65 views
1

我想將用戶添加到mongodb中新創建的數據庫。我正在使用db.addUser(用戶名,密碼)。 但它給mongoAuthentication異常。請告訴我原因。我想添加一個用戶,以便下次當我使用同一個數據庫時,我可以使用它與我創建用戶時使用的相同信用集合使用mongo將用戶添加到數據庫c#驅動程序

回答

0

如果您已經在管理員中創建了一個帶有用戶的數據庫數據庫,那麼在創建新用戶之前,您需要連接這些憑據。

+0

這意味着我必須連接到管理員憑據。然後我可以將用戶添加到數據庫或用戶的所有數據庫都存儲在管理員的數據庫中 – 2012-04-17 10:43:04

+0

如果數據庫沒有任何憑據 – 2012-04-17 11:22:43

0

可以使用下面的代碼添加用戶。

db.addUser(
    { 
     user: "user", 
     pwd: "pass", 
     roles: [ "root" ] 
    } 
) 
0
  1. 開始mongod.exe--auth參數。這將啓用您的MongoDB啓用身份驗證模式。
  2. 由於第一次啓動MongoDB時將沒有用戶,因此它將被視爲「本地主機異常」(您應該看到一條消息,指出「admin.system.users中沒有配置用戶,允許本地主機訪問」控制檯)。這意味着,它允許您在管理員數據庫(admin用戶)中創建第一個用戶,然後他們將有權創建其他常規用戶。
  3. 要建立管理員用戶啓動mongo.exe,然後鍵入以下命令:

    > use admin 
    > var user = { 
        "user" : "adminUser", 
        "pwd" : "adminPass", 
        "roles" : [ 
         { 
          "role" : "userAdminAnyDatabase", 
          "db" : "admin" 
         } 
        ] 
    } 
    
    > db.createUser(user); 
    

    您也可以如下做到這一點,使用C#代碼:

    private static bool fnCreateAdminUser() 
    { 
        try 
        { 
         var user = new BsonDocument { { "createUser", "adminUser" }, { "pwd", "adminPass" }, { "roles", new BsonArray { new BsonDocument { { "role", "userAdminAnyDatabase" }, { "db", "admin" } } } } }; 
         new MongoClient().GetDatabase("admin").RunCommand<BsonDocument>(user); 
         return true; 
        } 
        catch (MongoCommandException) { return true; } 
        catch { return false; } 
    } 
    
  4. 現在您的管理員用戶創建,您可以使用此管理員用戶爲您的數據庫創建其他常規用戶。您可以使用C#代碼或命令行等,具體取決於您的實施。以下是其創建指定數據庫的用戶是C#示例方法:

    private static bool CreateUser(string strDBName) 
    { 
        try 
        { 
         if (!string.IsNullOrEmpty(strDBName)) 
         { 
          // prepare admin credentials 
          MongoCredential cred = MongoCredential.CreateCredential("admin", "adminUser", "adminPass"); 
          MongoClientSettings setting = new MongoClientSettings(); 
          setting.Credentials = new[] { cred }; 
    
          var user = new BsonDocument { { "createUser", "regularUser" }, { "pwd", "regularPass" }, { "roles", new BsonArray { new BsonDocument { { "role", "readWrite" }, { "db", strDBName } } } } }; 
          new MongoClient(setting).GetDatabase(strDBName).RunCommand<BsonDocument>(user); 
          return true; 
         } 
         else 
         { 
          return false; 
         } 
        } 
        catch (MongoCommandException) { return true; } // if user already exists 
        catch { return false; } 
    } 
    

您也可以參考this博客文章以獲取更多的細節。它也解釋了其他事情,如添加/更改用戶角色等。

相關問題