3

我正在尝试copydb在 mongodb 中使用命令。

当我这样做时,我得到以下异常:

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”的值

希望这可以帮助

编辑:这与使用 mongodb shell 时的行为相同,因此 csharpdriver 似乎没有问题

于 2013-01-25T09:06:22.027 回答