2012-04-17 62 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博客文章以获取更多的细节。它也解释了其他事情,如添加/更改用户角色等。

相关问题