2016-12-15 3 views
0

Ich habe versucht, eine Verbindung zu Mongo Db Version 3.2 mit Mongo Java Client Version 3.2 und die folgende Ausnahme erhalten, jede Idee, was hier schief gelaufen?MongoDB Authentifizierung Fehler von Mongo Java Client

com.mongodb.MongoSecurityException: Exception authenticating 
at com.mongodb.connection.NativeAuthenticator.authenticate(NativeAuthenticator.java:48) 
at com.mongodb.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:99) 
at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:44) 
at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) 
at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:128) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: com.mongodb.MongoCommandException: Command failed with error 18: 'auth failed' on server 10.100.5.41:27017. The full response is { "ok" : 0.0, "errmsg" : "auth failed", "code" : 18 } 
at com.mongodb.connection.CommandHelper.createCommandFailureException(CommandHelper.java:170) 
at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:123) 
at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) 
at com.mongodb.connection.NativeAuthenticator.authenticate(NativeAuthenticator.java:46) 
... 5 more 

Folgendes ist der Code, den ich verwendete, um zu verbinden.

MongoClient mongoClient = null; 

    try { 
     MongoCredential credential = MongoCredential.createMongoCRCredential("admin", "mydatabase", "admin123".toCharArray()); 
     mongoClient = new MongoClient(new ServerAddress("10.100.5.41", 27017), Arrays.asList(credential)); 

     MongoDatabase database = mongoClient.getDatabase("mydatabase"); 
     System.out.println(database.getName()); 
     MongoCollection collection = database.getCollection("user"); 

     MongoCursor cursor = collection.find().iterator(); 
     while (cursor.hasNext()) { 
      System.out.println(cursor.next()); 
     } 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
+0

Haben Sie den Benutzer auf "mydatabase" oder auf "admin" hinzugefügt (was ist die Standardeinstellung)? Oder mit anderen Worten, versuchen Sie "admin" als Datenbank in createMongoCRCredential. – mtj

+1

@Zeus der Code scheint richtig. Ich mache das gleiche und habe kein Problem mit meinen Servern zu verbinden. Überprüfen Sie die Protokolle auf Ihrem Server auf Fehler während der Authentifizierung. https://docs.mongodb.com/manual/reference/system-users-collection/ – neomega

+0

Bitte kann jemand die Frage schließen, nach Stunden des Debuggens, db Administrator sagte, dass er den Benutzernamen und das Passwort geändert hat. Manchmal frage ich mich, warum ich Software Engineer werde. –

Antwort

1

Nach Stunden der Fehlersuche, db Administrator sagte, dass er den Benutzernamen und das Passwort geändert hat. Manchmal frage ich mich, warum ich Software Engineer werde.