[英]Add a new User for the database in mongodb
我想向新創建的數據庫添加一個新用戶,如果該用戶存在,那么我將連接到該數據庫。 我的代碼是:
公共CreateDatabaseOperationResult CreateDatabase(字符串數據庫名稱,字符串用戶名,字符串密碼,MongoServer服務器){
CreateDatabaseOperationResult createDatabaseOpResult = new CreateDatabaseOperationResult();
string message = null;
MongoCredentials credentials = new MongoCredentials(username, password);
MongoUser user = new MongoUser(credentials, false);
try
{
if (IsDatabaseNameValid(databaseName, out message))
{
if (server.DatabaseExists(databaseName, admincredentials) == true)
{
createDatabaseOpResult.Database = server.GetDatabase(databaseName, credentials);
MongoUser tempuser = createDatabaseOpResult.Database.FindUser(username);
if (tempuser.Equals(user))
{
//createDatabaseOpResult.DatabaseExists = true;
createDatabaseOpResult.IsOperationSuccessfull = false;
throw new ArgumentException("Database Already exist with different set of credentials ");
}
}
else
{
createDatabaseOpResult.Database = server.GetDatabase(databaseName, credentials);
createDatabaseOpResult.Database.AddUser(user);
//createDatabaseOpResult.DatabaseExists = false;
}
createDatabaseOpResult.IsOperationSuccessfull = true;
}
}
catch (MongoQueryException ex)
{
createDatabaseOpResult.Error = ex;
}
//catch (MongoAuthenticationException ex)
//{
// createDatabaseOpResult.Error = ex;
//}
catch (MongoException ex)
{
createDatabaseOpResult.Error = ex;
}
catch (ArgumentException ex)
{
createDatabaseOpResult.Error = ex;
}
return createDatabaseOpResult;
}
當我使用現有數據庫時,它會連接到該數據庫,但是當我嘗試添加新用途時,Database.AddUser會給出錯誤“此數據庫的憑據無效”,請查看錯誤並回復
大多數人都使用mongo shell來添加和刪除用戶,但是如果您真的想在C#中進行操作,訣竅是根據您要執行的操作使用正確的憑據。 假設您具有以下兩套憑據,一套用於管理數據庫,另一套用於常規數據庫:
var adminCredentials = new MongoCredentials("myadminusername", "myadminpassword", true);
var userCredentials = new MongoCredentials("myusername", "myuserpassword");
請注意,在創建adminCredentials時, 必須將true傳遞給admin參數。
要測試數據庫是否存在,需要管理員憑據:
if (server.DatabaseExists("mydatabase", adminCredentials))
{
// database exists
}
要添加用戶,需要管理員憑據:
var myDatabaseWithAdminCredentials = server.GetDatabase("mydatabase", adminCredentials);
if (myDatabaseWithAdminCredentials.FindUser("myusername") == null)
{
myDatabaseWithAdminCredentials.AddUser(userCredentials);
}
通常,您使用常規用戶憑據來處理數據庫:
var myDatabaseWithUserCredentials = server.GetDatabase("mydatabase", userCredentials);
var count = myDatabaseWithUserCredentials.GetCollection("mycollection").Count();
另外,請記住,每個數據庫可以有任意數量的用戶,因此您實際上並不需要檢查數據庫是否已經存在具有不同憑據集的用戶。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.