首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MongoDB可以从mongo客户端连接,但不能从C#驱动程序连接

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

Stack Overflow用户
提问于 2015-01-03 03:28:52
回答 2查看 4.9K关注 0票数 3

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

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

我用下面的代码初始化db:

代码语言:javascript
复制
        var client = new MongoClient(ConfigurationManager.ConnectionStrings["Default"].ConnectionString);
        var server = client.GetServer();
        var db = server.GetDatabase("agp");

但是当我尝试保存时,我得到了一个异常,说:

代码语言:javascript
复制
Unable to connect to server 192.168.0.100:27017: Invalid credential for database 'agp'..

在内部异常的深层,有这样的信息:

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

还有这个

代码语言:javascript
复制
{"Command 'authenticate' failed: auth failed (response: { \"ok\" : 0.0, \"errmsg\" : \"auth failed\", \"code\" : 18 })"}

有人知道我做错了什么吗?谢谢。

更新

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

代码语言:javascript
复制
Users.Save(user);

用户在哪里

代码语言:javascript
复制
Users = db.GetCollection<User>("users", WriteConcern.W1);

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

代码语言:javascript
复制
> 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"
                        }
                ]
EN

回答 2

Stack Overflow用户

发布于 2017-09-12 13:04:36

在MongoClientSettings上使用MongoCredentials -

代码语言:javascript
复制
    string username = "user";
    string password = "password";
    string mongoDbAuthMechanism = "SCRAM-SHA-1";
    MongoInternalIdentity internalIdentity = 
              new MongoInternalIdentity("admin", username);
    PasswordEvidence passwordEvidence = new PasswordEvidence(password);
    MongoCredential mongoCredential = 
         new MongoCredential(mongoDbAuthMechanism, 
                 internalIdentity, passwordEvidence);
    List<MongoCredential> credentials = 
               new List<MongoCredential>() {mongoCredential};


    MongoClientSettings settings = new MongoClientSettings();
    // comment this line below if your mongo doesn't run on secured mode
    settings.Credentials = credentials;
    String mongoHost = "127.0.0.1";
    MongoServerAddress address = new MongoServerAddress(mongoHost);
    settings.Server = address;

    MongoClient client = new MongoClient(settings); 

相似:Error on MongoDB Authentication

票数 1
EN

Stack Overflow用户

发布于 2015-09-24 19:12:54

我也遇到了同样的问题,在我的例子中,由于mongo的"authSchema版本“而导致的服务器log.Its问题,所以你只需遵循以下步骤,它就会开始工作。

  • 在不带--auth选项的情况下重新启动mongod
  • 现在在客户机上使用以下命令

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

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27747503

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档