【问题标题】:Authentication Error While Connecting to Mongo连接到 Mongo 时出现身份验证错误
【发布时间】:2015-06-30 17:12:33
【问题描述】:

连接到 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 的代码 sn-p:

db.auth('accountUser','password'); 1

这些是使用的 jar 文件: spring-data-mongodb-1.3.0.RELEASE, mongo-java-driver-2.13.2

任何建议都会很有价值。谢谢!!

【问题讨论】:

    标签: java spring mongodb authentication


    【解决方案1】:

    要么传递这个 URI

    String uri = "mongodb://accountUser:password@127.0.0.1/test";
    

    或者将 userCredentials 传递给构造函数两者不能一起使用,你仍然可以突出显示它到底是哪一行引发了错误

    1. MongoTemplate mongoTemplate = new MongoTemplate(dbFactory);
    2. DBCollection collection = mongoTemplate.getCollection("table");
    3. DBCursor cursor = collection.find();

    【讨论】:

    • 是的,我将代码更改为 UserCredentials userCredentials = new UserCredentials("adminUser", "password"); Mongo mongo2 = new Mongo("127.0.0.1", 27017); MongoTemplate mongoTemplate = new MongoTemplate(mongo2, "Yatra", userCredentials); DBCollection 集合 =mongoTemplate.getCollection("url_entries"); DBCursor 游标 = collection.find(); while(cursor.hasNext()){ System.out.println(cursor.next()); } } catch(UnknownHostException e){ } 这是给出错误的行:DBCollection collection = mongoTemplate.getCollection("url_entries");
    • 你的 mongo 数据库名称是 Yatra ,它有集合 url_entries ,如果是这样,在 mongo 控制台上使用 Yatra 和 show collections 命令的输出是什么。如果这里看起来一切都很好,那么我认为端口不是 27017 。请你再检查一下……对不起,如果这激怒了你
    猜你喜欢
    • 1970-01-01
    • 2017-06-18
    • 2020-07-10
    • 1970-01-01
    • 2017-02-05
    • 1970-01-01
    • 2022-08-24
    • 2020-09-18
    • 1970-01-01
    相关资源
    最近更新 更多