2012-04-17 3 views
1

mongodb에서 새로 생성 된 데이터베이스에 사용자를 추가하고 싶습니다. db.addUser (username, password)를 사용하고 있습니다. 하지만 mongoAuthentication 예외를 제공하고 있습니다. 이유를 말해주세요. 다음 번에 동일한 데이터베이스를 사용할 때 사용자를 만들기 위해 통과 한 것과 동일한 crednetials 집합으로 사용할 수 있도록 사용자를 추가하고 싶습니다.mongo C# 드라이버를 사용하여 데이터베이스에 사용자 추가

답변

0

관리자로 사용자와 함께 db를 이미 생성했다면 데이터베이스를 만들려면 새 사용자를 만들기 전에 해당 자격 증명으로 연결해야합니다.

+0

이는 관리자의 자격 증명으로 연결해야 함을 의미합니다. 그런 다음 모든 데이터베이스의 사용자를 데이터베이스에 추가하거나 관리자의 데이터베이스에 저장합니다. –

+0

그리고 db에 자격 증명이없는 경우 –

0

당신은 다음과 같은 코드를 사용하여 사용자를 추가 할 수 있습니다.

db.addUser(
    { 
     user: "user", 
     pwd: "pass", 
     roles: [ "root" ] 
    } 
) 
0
  1. --auth 매개 변수와 함께 시작 mongod.exe. 이렇게하면 인증 모드가 활성화 된 MongoDB가 시작됩니다.
  2. MongoDB를 처음 시작할 때 사용자가 없기 때문에 "localhost 예외"로 간주됩니다 ("admin.system.users에 구성된 사용자가 없으며 로컬 호스트 액세스 허용"이라는 메시지가 나타납니다). 콘솔). 즉, admin 데이터베이스 (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. 이제 관리자 사용자가 생성되고, 당신은 할 수 이 admin 사용자를 사용하여 데이터베이스에 대한 다른 일반 사용자를 작성하십시오. 구현에 따라 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 블로그 게시물을 참조 할 수 있습니다 : 지정된 데이터베이스에 대한 사용자를 만듭니다 샘플 C#을 방법은 다음과 같습니다. 사용자 역할을 추가/변경하는 것과 같은 다른 것들도 설명합니다.

관련 문제