1

mongodbで新しく作成されたデータベースにユーザーを追加したいと思います。私はdb.addUser(username、password)を使用しています。しかし、mongoAuthentication例外が発生しています。理由を教えてください。次回同じデータベースを使用するときに、ユーザーを作成するために渡したのと同じ資格情報のセットで使用できるように、ユーザーを追加したい

4

4 に答える 4

3
  1. mongod.exeパラメータから始め--authます。これにより、認証モードを有効にしてMongoDBが起動します。
  2. MongoDBを初めて起動するとユーザーがいないため、「localhost例外」と見なされます(コンソールに「admin.system.usersにユーザーが構成されていないため、localhostアクセスを許可しています」というメッセージが表示されます)。 。これは、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. これで管理者ユーザーが作成され、この管理者ユーザーを使用してデータベースの他の通常のユーザーを作成できます。実装に応じて、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

adminデータベースにユーザーを含むデータベースを既に作成している場合は、新しいユーザーを作成する前に、それらの資格情報に接続する必要があります。

于 2012-04-17T10:16:22.857 に答える
0

管理者ユーザーと通常のユーザーを作成するプロセスは、次の場所に記載されています。

http://www.mongodb.org/display/DOCS/Security+and+Authentication#SecurityandAuthentication-ConfigureAuthenticationandSecurity

于 2012-04-17T14:02:06.353 に答える
0

次のコードを使用してユーザーを追加できます。

db.addUser(
    {
      user: "user",
      pwd: "pass",
      roles: [ "root" ]
    }
)
于 2015-01-02T18:54:35.427 に答える