这玩意会让我发疯的。我试着让它工作3个小时,但没有任何结果。我安装了mongodb 2.8rc4。我在admin db中创建了一个用户帐户。我可以使用mongo localhost/agp -u dato0011 -p "MyPassword“连接到mongod。我可以通过db.auth验证它,但是由于未知的原因,这个东西不能在C#驱动程序中工作。
连接字符串为mongodb://dato0011:MyPWD@localhost/agp
我用下面的代码初始化db:
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"
}
]发布于 2017-09-12 13:04:36
在MongoClientSettings上使用MongoCredentials -
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); 发布于 2015-09-24 19:12:54
我也遇到了同样的问题,在我的例子中,由于mongo的"authSchema版本“而导致的服务器log.Its问题,所以你只需遵循以下步骤,它就会开始工作。
mongo使用admin;db.system.users.remove({}) db.system.version.remove({}) db.system.version.insert({ "_id“:"authSchema","currentVersion”:3 })
*重新创建您的用户,并在--auth模式下重启mongod
https://stackoverflow.com/questions/27747503
复制相似问题