Verbindung zu MongoDB mit Authentifizierung fehlschlägt

Ich bin mit einer MongoDB in Version 3 und habe ich eine Datenbank mit dem Namen 'logMonitor' und erstellt einen Benutzer wie:

{
    "_id" : "logMonitor.log",
    "user" : "log",
    "db" : "logMonitor",
    "roles" : [
        {
            "role" : "readWrite",
            "db" : "logMonitor"
        }
    ]
}

wenn ich eine Verbindung zu der Datenbank per shell mit dem Benutzer "anmelden", es gibt success, genau wie dieser:

[jboss@chonggouapp mongodb]$ mongo logMonitor -u "log" -p "log"

MongoDB shell version: 3.0.6

anschließen: logMonitor

Jedoch die Verbindung via Java mit dem folgenden code nicht.

    ServerAddress addr = new ServerAddress("10.46.20.65", 27017);

    MongoCredential credential = MongoCredential.createMongoCRCredential(
            "log", "logMonitor", "log".toCharArray());

    MongoClientOptions options = MongoClientOptions.builder()
            .serverSelectionTimeout(1000)
            .build();
    MongoClient mongoClient = new MongoClient(addr, Arrays.asList(credential), options);

    MongoDatabase db = mongoClient.getDatabase("logMonitor");

    long c = db.getCollection("sysLog").count();

Wird folgende Ausnahme ausgegeben:

Exception in thread "main" com.mongodb.MongoTimeoutException: Timed out nach 1000 ms beim warten auf einen server, Spiele ReadPreferenceServerSelector{readPreference=PV}. Client-Ansicht der cluster-Status ist {type=UNKNOWN, Server=[{Adresse=10.46.20.65:27017, Typ=UNBEKANNT, Status=VERBINDEN, Ausnahme={com.mongodb.MongoSecurityException: Ausnahme authentifizieren}, verursacht durch {com.mongodb.MongoCommandException: Befehl fehlgeschlagen mit Fehler 18: 'auth failed' auf server 10.46.20.65:27017. Die vollständige Antwort ist { "ok" : 0.0, "errmsg" : "auth failed", "code" : 18 }}}]
bei com.mongodb.- Verbindung.BaseCluster.createTimeoutException(BaseCluster.java:370)
bei com.mongodb.- Verbindung.BaseCluster.selectServer(BaseCluster.java:101)
bei com.mongodb.die Bindung.ClusterBinding$ClusterBindingConnectionSource.(ClusterBinding.java:75)
bei com.mongodb.die Bindung.ClusterBinding$ClusterBindingConnectionSource.(ClusterBinding.java:71)
bei com.mongodb.die Bindung.ClusterBinding.getReadConnectionSource(ClusterBinding.java:63)
bei com.mongodb.operation.CommandOperationHelper.executeWrappedCommandProtocol(CommandOperationHelper.java:65)
bei com.mongodb.Betrieb.CountOperation.execute(CountOperation.java:172)
bei com.mongodb.Betrieb.CountOperation.execute(CountOperation.java:43)
bei com.mongodb.Mongo.execute ("Mongo".java:738)
bei com.mongodb.Mongo$2.execute ("Mongo".java:725)
bei com.mongodb.MongoCollectionImpl.count(MongoCollectionImpl.java:167)
bei com.mongodb.MongoCollectionImpl.count(MongoCollectionImpl.java:147)
bei com.baosight.bsfc4.mn.lg.utils.Test.main(Test.java:34)

Kann mir jemand sagen, was ist das problem? Ist etwas falsch mit meinem java-code?

Dank.

Ist die Maschine hören auf die angegebene IP-Adresse oder nur auf dem localhost? Sie sollten überprüfen, yor mongDB config-Datei für "bind_address".

InformationsquelleAutor Yuanping Wu | 2015-12-22

Schreibe einen Kommentar