1

我想将用户添加到 mongodb 中新创建的数据库中。我正在使用 db.addUser(用户名,密码)。但它给出了 mongoAuthentication 异常。请告诉我原因。我想添加一个用户,以便下次我使用同一个数据库时,我可以将它与我通过创建用户时传递的相同的凭据集一起使用

4

4 回答 4

3
  1. mongod.exe--auth参数开始。这将在启用身份验证模式的情况下启动 MongoDB。
  2. 由于首次启动 MongoDB 时将没有用户,因此将被视为“localhost 异常”(您应该在控制台中看到一条消息“在 admin.system.users 中配置没有用户,允许 localhost 访问”) . 这意味着,它允许您在 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; }
    }
    

您还可以参考博客文章了解更多详细信息。它还解释了其他事情,例如添加/更改用户角色等。

于 2017-04-03T09:01:20.563 回答
0

此处记录了创建管理员用户和普通用户的过程:

http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-ConfiguringAuthenticationandSecurity

于 2012-04-17T14:02:06.353 回答
0

如果您已经在 admin 数据库中创建了一个包含用户的数据库,那么您将需要使用这些凭据进行连接,然后才能创建新用户。

于 2012-04-17T10:16:22.857 回答
0

您可以使用以下代码添加用户。

db.addUser(
    {
      user: "user",
      pwd: "pass",
      roles: [ "root" ]
    }
)
于 2015-01-02T18:54:35.427 回答