java - 连接 Mongo 时出现身份验证错误

标签 java spring mongodb authentication

连接到 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 传递给构造函数两者不能一起使用,您仍然可以突出显示它抛出错误的具体行

  1. MongoTemplate mongoTemplate = new MongoTemplate(dbFactory);
  2. DBCollection集合 = mongoTemplate.getCollection("table");
  3. DBCursor 游标 = collection.find();

关于java - 连接 Mongo 时出现身份验证错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31144350/

相关文章:

java - WS 客户端在 Windows Server 2012 R2 上获取 "Connection reset"

java - 具有 Java 服务帐户的 Google Cloud Storage - 403 Caller 没有存储桶的 storage.objects.list 访问权限

java - Spring Data - MongoDB - 更多与 和 相关的术语

node.js - 蒙戈 : "2d" index and normal index

php - 将 MongoId 对象数组转换为字符串数组

Mongodb在查询中创建别名

java - Android 服务后台 Android Oreo

java - 对任务感到困惑。在循环中更改字符串名称保持相同的循环继续

java - 使用ManyToMany关系时如何在Spring中获取对象外键列表?

java - Spring Boot 验证响应 JSON