- Examples
- Managing Users
How to Manage Users
While MongoDB supports many user management commands, the driver does not have any helpers for them because users are generally managed from the MongoDB shell. However, it is still possible to manage users from the driver by using the RunCommand
or RunCommandAsync
methods.
Listing Users
The usersInfo
command will provide information about users in a specific database.
// get the database
var db = client.GetDatabase("products");
// construct the usersInfo command
var command = new BsonDocument("usersInfo", 1);
// Run the command. If it fails, an exception will be thrown.
var result = db.RunCommand<BsonDocument>(command);
// Run the command. If it fails, an exception will be thrown.
var result = await db.RunCommandAsync<BsonDocument>(command);
The result
variable will contain a field called “users” which will contain all the users for the “products” database.
Creating Users
The following example uses the createUser
command to add a user to a dataase.
// get the database
var db = client.GetDatabase("products");
// Construct the write concern
var writeConcern = WriteConcern.WMajority
.With(wTimeout: TimeSpan.FromMilliseconds(5000);
// Construct the createUser command.
var command = new BsonDocument
{
{ "createUser", "accountAdmin01" },
{ "pwd", "cleartext password" },
{ "customData", new BsonDocument("employeeId", 12345) },
{ "roles", new BsonArray
{
new BsonDocument
{
{ "role", "clusterAdmin" },
{ "db", "admin" }
},
new BsonDocument
{
{ "role", "readAnyDatabase" },
{ "db", "admin" }
},
"readWrite"
}},
{ "writeConcern", writeConcern.ToBsonDocument() }
};
// Run the command. If it fails, an exception will be thrown.
db.RunCommand<BsonDocument>(command);
// Run the command. If it fails, an exception will be thrown.
await db.RunCommandAsync<BsonDocument>(command);
Updating Users
The following example uses the updateUser
command to update a user in a database.
// get the database
var db = client.GetDatabase("products");
// Construct the updateUser command.
var command = new BsonDocument
{
{ "updateUser", "appClient01" },
{ "customData", new BsonDocument("employeeId", "0x3039") },
{ "roles", new BsonArray
{
new BsonDocument
{
{ "role", "read" },
{ "db", "assets" }
},
}}
};
// Run the command. If it fails, an exception will be thrown.
db.RunCommand<BsonDocument>(command);
// Run the command. If it fails, an exception will be thrown.
await db.RunCommandAsync<BsonDocument>(command);
Dropping Users
The following example uses the dropUser
command to drop a user from a database.
// get the database
var db = client.GetDatabase("products");
// Construct the dropUser command.
var command =
@"{
dropUser: ""accountAdmin01"",
writeConcern: { w: ""majority"", wtimeout: 5000 }
}";
// Run the command. If it fails, an exception will be thrown.
db.RunCommand<BsonDocument>(command);
// Run the command. If it fails, an exception will be thrown.
await db.RunCommandAsync<BsonDocument>(command);
Note
Even though we used a string here for the command, it could have been a BsonDocument like the other examples. Well-formed strings of valid JSON are interchangeable with BsonDocument.Other User Management Commands
There are a number of other commands that exist for managing users and each would be run in a similar fashion to how ones demonstrated above.