连接到 Mongo DB 时出现异常:
下面是堆栈跟踪:
Exception in thread "main" com.mongodb.CommandFailureException: { "serverUsed" : "127.0.0.1:27017" , "ok" : 0.0 , "code" : 18 , "errmsg" : "Authentication failed."}
at com.mongodb.CommandResult.getException(CommandResult.java:76)
at com.mongodb.CommandResult.throwOnError(CommandResult.java:140)
at com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:899)
at com.mongodb.DBPort.authenticate(DBPort.java:432)
at com.mongodb.DBPort.checkAuth(DBPort.java:443)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:293)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:273)
at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)
at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:66)
at com.mongodb.DBCursor._check(DBCursor.java:498)
at com.mongodb.DBCursor._hasNext(DBCursor.java:621)
at com.mongodb.DBCursor.hasNext(DBCursor.java:657)
at mongoOperations.mongoOperations.getConnectionMongo(mongoOperations.java:103)
at mongoOperations.mongoOperations.main(mongoOperations.java:138)
下面是代码片段:
private static void getConnectionMongo(){
try{
String uri = "mongodb://accountUser:password@127.0.0.1/test";
MongoClientURI mongoClientURI = new MongoClientURI(uri);
MongoURI mongoURI = new MongoURI(mongoClientURI);
Mongo mongo = new Mongo(mongoURI);
UserCredentials userCredentials = new UserCredentials("accountUser", "password");
SimpleMongoDbFactory dbFactory = new SimpleMongoDbFactory(mongo, "test", userCredentials);
MongoTemplate mongoTemplate = new MongoTemplate(dbFactory);
DBCollection collection = mongoTemplate.getCollection("table");
DBCursor cursor = collection.find();
while(cursor.hasNext()){
System.out.println(cursor.next());
}
}
catch(UnknownHostException e){
}
}
下面是来自 mongo Shell 的代码片段:
db.auth('accountUser','password');
1
这些是使用的 jar 文件: spring-data-mongodb-1.3.0.RELEASE, mongo-java-driver-2.13.2
任何建议都会受到重视。谢谢!!
最佳答案
传递此 URI
String uri = "mongodb://accountUser:password@127.0.0.1/test";
或者将 userCredentials 传递给构造函数两者不能一起使用,您仍然可以突出显示它抛出错误的具体行
MongoTemplate mongoTemplate = new MongoTemplate(dbFactory);
DBCollection集合 = mongoTemplate.getCollection("table");
DBCursor 游标 = collection.find();
关于java - 连接 Mongo 时出现身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31144350/