如何在MongoDB中创建用户

时间:2014-04-08 18:13:26

标签: mongodb mongodb-.net-driver

我正在使用最新版本的驱动程序和MongoDB数据库2.6,我曾使用以下代码创建用户:

        MongoUser _user1 = new MongoUser("username", "password", false);

        MongoDatabase.AddUser(_user1);

现在通过显示以下信息表示MongoDatabase.AddUser()已被弃用:

  

...已过时:使用新的用户管理命令'createUser'或   'UpdateUser两个'。“

这个新的用户管理命令在哪里?如何使用新的MongoDB C#驱动程序创建用户?

4 个答案:

答案 0 :(得分:4)

对于那些有兴趣使用C#v2.0.1驱动程序和MongoDB v3.0.6创建用户的人,请使用以下命令:

var client = new MongoClient(connectionString);
var database = client.GetDatabase("database_to_create_user_in");
var user = new BsonDocument { { "createUser", "fred" }, { "pwd", "some_secure_password" }, { "roles", new BsonArray { new BsonDocument { { "role", "read" }, { "db", "database_to_create_user_in" } } } } };
await database.RunCommandAsync<BsonDocument>(user);

答案 1 :(得分:3)

我使用的是MongoDB 2.6.2和最新的C#驱动程序1.9.2。 这是您使用&#39; createUser&#39;:

添加新用户的方法
public static void AddUser(string user, string password, string[] roles)
{
    var database = GetDatabase();
    var command = new CommandDocument { { "createUser", user}, { "pwd", password }, { "roles", new BsonArray(roles) } };
    var result = database.RunCommand(command);
}

答案 2 :(得分:0)

我在GitHub存储库的最新代码中搜索了'createUser': https://github.com/mongodb/mongo-csharp-driver/search?q=createUser&ref=cmdform

在撰写本文时,仅提及'createUser'is here

该方法已标记为已过时in this commit

然而;仔细检查代码,我see this

if (_server.RequestConnection.ServerInstance.Supports(FeatureId.UserManagementCommands))
    {
        AddUserWithUserManagementCommands(user);
    }
    else
    {
       AddUserWithInsert(user);
    }

因此,它正在引导所需的方法

答案 3 :(得分:0)

对我来说,我很难胜任这些角色。我想向mongodb添加一个管理员(初始用户)。我的工作解决方案就是这样。

private static bool CreateAdminUser(string databaseUser, string databasePassword)
{
    try
    {
        var databaseName = "admin";
        var user = new CommandDocument
        {
            { "createUser", databaseUser },
            { "pwd", databasePassword },
            {
                "roles", new BsonArray
                {
                    new BsonDocument { { "role", "readWriteAnyDatabase" }, { "db", databaseName } },
                    new BsonDocument { { "role", "userAdminAnyDatabase" }, { "db", databaseName } },
                    new BsonDocument { { "role", "dbAdminAnyDatabase" }, { "db", databaseName } }
                }
            }
        };
        new MongoClient().GetServer().GetDatabase(databaseName).RunCommand(user);
        return true;
    }
    catch
    {
        return false;
    }
}