2016-06-27 2 views
0

Q - Не удается аутентифицироваться через драйвер Mongo Java. Все отлично работает на оболочке монго.Проверка подлинности Java-драйвера MongoDB - ошибка несоответствия версии?

MongoDB Server Version -

db version v3.2.6 

Java MongoDB Driver Maven зависимостей

version 2.6.2 

Это то, что я сделал -

  1. Начало MongoDB - Суд mongod --port 27017 --dbpath/данные/дб
  2. Открытая оболочка - Монго --port 27017
  3. использование админы
  4. db.createUser ({пользователь: "а", PWD: "а »роли: [{роль: "корень", дб: "админы"}]})
  5. Restart с AUTH требуется - Суд mongod --auth --port 27017 --dbpath/данные/дб

Сторона со стороны Java

MongoOptions moptions = new MongoOptions(); 
moptions.autoConnectRetry = Boolean.getBoolean(prop.getProperty("MONGO_OPTIONS_AUTOCONNECT_RETRY")); 
moptions.connectionsPerHost = Integer.parseInt(prop.getProperty("MONGO_OPTIONS_CONNECTIONS_PER_HOST")); 
moptions.threadsAllowedToBlockForConnectionMultiplier = Integer.parseInt(prop.getProperty("MONGO_OPTIONS_THREADS_BLOCK")); 
ServerAddress srvAddr = new ServerAddress(prop.getProperty("MONGODB_HOST"),      Integer.parseInt(prop.getProperty("MONGODB_PORT")));   
client = new Mongo(srvAddr, moptions); 

DB adminDB = client.getDB("admin"); 
Boolean auth = adminDB.authenticate("abc", "abc".toCharArray()); 

Результат

аутентификации всегда выходит FALSE.

ответ

1

Процедура аутентификации для 2.x драйвер MongoDB Java я знаю, работает следующим образом:

MongoCredential credential = MongoCredential.createCredential(
      user, "admin", password.toCharArray()); 
    Mongo mongo = new MongoClient(new ServerAddress(mongoHostname), 
      Arrays.asList(credential)); 

Примечание для доступа к базе данных Монго 3.2 с помощью драйвера 2.x вам нужно, по крайней мере MongoDB Java Версия драйвера 2.14 (см. MongoDB compatibility info). Ваша версия 2.6.2 слишком устарела. Вам нужно его обновить.

+0

MongoCredential только с Mongodb версия 2.11 – abipc

+0

Модернизация - это правильный путь. Tnx. – abipc