我想将用户添加到mongodb中新创建的数据库中。我正在使用db.addUser(用户名,密码)。 但它提供了mongoAuthentication异常。请告诉我原因。我想添加一个用户,以便下次当我使用相同的数据库时,我可以使用与我传递给创建用户时相同的一组信用
答案 0 :(得分:2)
mongod.exe
参数启动--auth
。这将启用启用了身份验证模式的MongoDB。要创建管理员用户启动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; }
}
现在您的管理员用户已创建,您可以使用此管理员用户为您的数据库创建其他常规用户。您可以使用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博文,了解更多详情。它还解释了其他一些事情,比如添加/更改用户角色等。
答案 1 :(得分:0)
如果您已在admin数据库中创建了一个带有用户的数据库,那么您需要先连接这些凭据,然后才能创建新用户。
答案 2 :(得分:0)
此处记录了创建管理员用户和常规用户的过程:
答案 3 :(得分:0)
您可以使用以下代码添加用户。
db.addUser(
{
user: "user",
pwd: "pass",
roles: [ "root" ]
}
)