Unable to connect to MongoDB (MongoLabs) via C# client

后端 未结 4 754
庸人自扰
庸人自扰 2020-12-20 15:25

Question Background:

I have setup in MongoLabs (mLab - https://mlab.com/) a database and have added a very simple Collection. I am using the MongoDB

相关标签:
4条回答
  • 2020-12-20 15:28

    If I had to hazard a guess, the issue is most likely a firewall issue. You should check the following

    • nslookup of the host (ds048719.mlab.com) from the C# Application Host
    • ping of the host (ds048719.mlab.com) from the C# Application Host (might fail, depending on mLab's settings)
    • That your IP address is whitelisted
    • Test the connection using the Mongo Shell from the same host where the C# Application is running. mLab has docs here.
    • Test the connection with a raw telnet, eg telnet ds048719.mlab.com 48719
    • Ensure you are using the correct authenticationDatabase (in your example, this is specified by the /db), this is usually admin but could be your database name if you are on a shared instance.

    You can find the docs on connecting with the C# driver in the MongoDB C# Driver Docs. It is important to note the following:

    The Database Component

    The database component is optional and is used to indicate which database to authenticate against. When the database component is not provided, the “admin” database is used.

    mongodb://host:27017/mydb

    Above, the database by the name of “mydb” is where the credentials are stored for the application.

    NOTE:

    Some drivers utilize the database component to indicate which database to work with by default. The .NET driver, while it parses the database component, does not use the database component for anything other than authentication.

    Finally, I would suggest in the future, obfuscate the hostname and port when posting to SO. While security through obscurity alone is a bad policy, it certainly adds a layer of defense for your MongoDB deployment.

    0 讨论(0)
  • 2020-12-20 15:34

    I have similar issue, in my case user wasn't created in database. You can create user by this

    db.createUser({
          user: "userNameGoesHereRemovedForSO",
          pwd: "passwordGoesHereRemovedForSO",
          roles: ["readWrite", "dbAdmin"]
        });
    
    0 讨论(0)
  • 2020-12-20 15:34

    Quick workaround : just remove database name from the url

    var client = new MongoClient("mongodb://root:example@localhost:27017");
    
    var _db = client.GetDatabase("testDB");
    
    0 讨论(0)
  • 2020-12-20 15:37

    Your connection string may be incorrect. You have /db at the end, is "db" the name of your authentication database?

    Ensure your authentication database is correct. If it is not you may want to remove it all together and let it fall back to admin

    0 讨论(0)
提交回复
热议问题