通过Java的MongoDB:CommandFailureException,代码18

通过Java的MongoDB:CommandFailureException,代码18,java,mongodb,Java,Mongodb,从Java在MongoDB上运行查询时,出现以下错误: com.mongodb.CommandFailureException: { "serverUsed" : "AAA.BBB.CCC.DDD:27017" , "code" : 18 , "ok" : 0.0 , "errmsg" : "auth fails"} at com.mongodb.CommandResult.getException(CommandResult.java:76) at com.mongodb.CommandRes

从Java在MongoDB上运行查询时,出现以下错误:

com.mongodb.CommandFailureException: { "serverUsed" : "AAA.BBB.CCC.DDD:27017" , "code" : 18 , "ok" : 0.0 , "errmsg" : "auth fails"}
at com.mongodb.CommandResult.getException(CommandResult.java:76)
at com.mongodb.CommandResult.throwOnError(CommandResult.java:131)
at com.mongodb.DBPort$NativeAuthenticator.authenticate(DBPort.java:652)
at com.mongodb.DBPort.authenticate(DBPort.java:364)
at com.mongodb.DBPort.checkAuth(DBPort.java:375)
at com.mongodb.DBTCPConnector.innerCall(DBTCPConnector.java:291)
at com.mongodb.DBTCPConnector.call(DBTCPConnector.java:271)
at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:84)
at com.mongodb.DBCollectionImpl.find(DBCollectionImpl.java:66)
at com.mongodb.DBCursor._check(DBCursor.java:458)
at com.mongodb.DBCursor._hasNext(DBCursor.java:546)
at com.mongodb.DBCursor.hasNext(DBCursor.java:571)
当我在RoboMongo中使用相同的凭据时,我可以连接到相同的数据库

在Java中,我使用以下代码连接到它:

public void init() {
    try {
        final ServerAddress serverAddress = new ServerAddress("AAA.BBB.CCC.DDD", 27017);

        final MongoCredential credential = MongoCredential.createMongoCRCredential("user", 
                "dbName", "password".toCharArray());

        mongoClient = new MongoClient(serverAddress, Arrays.asList(credential));

        db = mongoClient.getDB("dbName");
        state = getPersistenceState();
    } catch (final UnknownHostException exception) {
        LOGGER.error("", exception);
    }
}
我使用的是MongoDB 2.4.10和MongoJava驱动程序2.12.2

如何修改代码以便能够查询和修改数据库

  • 检查您是否能够使用mongo shell进行身份验证并运行查询:“mongo--authenticationDatabase dbName-u user-p”

  • 查看mongod日志并查找失败的身份验证尝试-通常是出了问题


  • 下面的解决方案适合我。