3

copydbmongodbでコマンドを使おうとしています。

そうすると、次の例外が発生します。

Command 'copydb' failed: access denied; use admin db (response: { "errmsg" : "access denied; use         
admin db", "ok" : 0.0 })

管理者としてログインしようとしましたが、ユーザー名とパスワードを使用していないため失敗しました。

ユーザー名とパスワードなしで管理者としてログインするにはどうすればよいですか?すでに権限を持っているのに、なぜ管理者としてログインする必要があるのdropですか?

前もって感謝します

m_mongoDatabase.RunCommand(new CommandDocument(new BsonElement("copydb", (BsonValue) 1),
    new BsonElement("fromdb", (BsonValue) from),
    new BsonElement("fromhost", (BsonValue) fromHost),
    new BsonElement("todb", (BsonValue) to)));
4

1 に答える 1

5

問題は、最初にターゲットインスタンスの「admin」データベースに接続していないことだと思います。

次のコードを使用して、必要な操作を実行できます。

var client = new MongoClient(MongoUrl.Create("mongodb://localhost:27018"));
        var m_mongoDatabase = client.GetServer().GetDatabase("admin");
        var result = m_mongoDatabase.RunCommand(
            new CommandDocument(new BsonElement("copydb", 1),
                new BsonElement("fromhost", "localhost"),
                new BsonElement("fromdb", "sourcedb"),
                new BsonElement("todb", "targetdb")));

最初にadminデータベースへの参照を取得していることに注意してください。私がそれをせず、別の通常のデータベースを使用したとき、私はあなたと同じエラーを受け取りました。

したがって、要約すると、「m_mongoDatabase」の値にadminデータベースを使用します

お役に立てれば

編集:これはmongodbシェルを使用する場合と同じ動作であるため、csharpdriverの問題ではないようです。

于 2013-01-25T09:06:22.027 に答える