我想将用户添加到 mongodb 中新创建的数据库中。我正在使用 db.addUser(用户名,密码)。但它给出了 mongoAuthentication 异常。请告诉我原因。我想添加一个用户,以便下次我使用同一个数据库时,我可以将它与我通过创建用户时传递的相同的凭据集一起使用
问问题
2416 次
4 回答
3
mongod.exe
从--auth
参数开始。这将在启用身份验证模式的情况下启动 MongoDB。- 由于首次启动 MongoDB 时将没有用户,因此将被视为“localhost 异常”(您应该在控制台中看到一条消息“在 admin.system.users 中配置没有用户,允许 localhost 访问”) . 这意味着,它允许您在 admin 数据库中创建第一个用户(管理员用户),然后该用户将有权创建其他常规用户。
要创建管理员用户启动
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; } }
您还可以参考此博客文章了解更多详细信息。它还解释了其他事情,例如添加/更改用户角色等。
于 2017-04-03T09:01:20.563 回答
0
此处记录了创建管理员用户和普通用户的过程:
于 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 回答