MongoDB可以从mongo客户端连接,但不能从C#驱动程序连接

时间:2015-01-02 19:28:52

标签: c# .net mongodb authentication mongodb-.net-driver

这件事现在会让我发疯。我试图让它工作3个小时没有任何结果。我安装了mongodb 2.8rc4。我在admin db中创建了一个用户帐户。我可以使用mongo localhost / agp -u dato0011 -p“MyPassword”连接到mongod。我可以通过db.auth对它进行身份验证,但由于未知原因,这个东西不适用于C#驱动程序。

连接字符串为mongodb://dato0011:MyPWD@localhost/agp

我使用以下代码初始化数据库:

        var client = new MongoClient(ConfigurationManager.ConnectionStrings["Default"].ConnectionString);
        var server = client.GetServer();
        var db = server.GetDatabase("agp");

但是当我尝试保存时,我得到一个例外说:

Unable to connect to server 192.168.0.100:27017: Invalid credential for database 'agp'..

并且深入到内部异常之下,有这样的信息:

{“authenticate”:1,“user”:“dato0011”,“nonce”:“fc65b3c269560533”,“key”:“35589d31830b76c72358343bc054105f”}

和这个

{"Command 'authenticate' failed: auth failed (response: { \"ok\" : 0.0, \"errmsg\" : \"auth failed\", \"code\" : 18 })"}

任何人都知道我做错了什么? 感谢。

更新

不知道它是否会有所帮助,但这是抛出异常的代码:

Users.Save(user);

用户

Users = db.GetCollection<User>("users", WriteConcern.W1);

更新2 显然,异常消息有点误导。驱动程序确实连接到mongod,但由于未知原因无法进行身份验证。用户名和密码参数正确传递。这是admin db中的用户。

> db.system.users.find().toArray()
[
        {
                "_id" : "agp.dato0011",
                "user" : "dato0011",
                "db" : "agp",
                "credentials" : {
                        "SCRAM-SHA-1" : {
                                "iterationCount" : 10000,
                                "salt" : "GjlDJOiKf2Xn1VO/1MhWXA==",
                                "storedKey" : "vAi30QZLFkCZf6ISm5TIfIWPwZY=",
                                "serverKey" : "DBmbbRLrLXEIxFCuZ52VaSnRWwo="
                        }
                },
                "roles" : [
                        {
                                "role" : "readWrite",
                                "db" : "agp"
                        },
                        {
                                "role" : "dbAdmin",
                                "db" : "agp"
                        }
                ]

2 个答案:

答案 0 :(得分:1)

在MongoClientSettings上使用MongoCredentials -

_2

类似: Error on MongoDB Authentication

答案 1 :(得分:0)

我也遇到了同样的问题,在我的情况下我读了服务器日志。问题是因为&#34; authSchema版本&#34; mongo所以你必须遵循的是以下步骤,它将开始工作

  • 重启mongod而不使用--auth选项
  • 现在在客户端上使用以下内容

    mongo
    use admin;
    db.system.users.remove({})    
    db.system.version.remove({})
    db.system.version.insert({ "_id" : "authSchema", "currentVersion" : 3 })
    

*再次创建您的用户并在-auth模式下重启mongod