2016-06-27 15 views
0

Q - Mongo Java Driverで認証できません。 mongo shellで問題なく動作します。MongoDB Javaドライバ認証 - バージョンのミスマッチの問題?

のMongoDBサーババージョン - これは私がやったことある

db version v3.2.6 

のJavaのMongoDBドライバーMavenの依存関係

version 2.6.2 

-

  1. 開始のMongoDB - 須藤のmongod --port 27017 --dbpath /データ/ DB
  2. オープンシェル - 27017
  3. 使用管理を--port Mongoの
  4. db.createUser({ユーザ: "ABC"、PWD:「ABC 」役割:[{役割: "ルート"、DB: "管理者"}]})
  5. 再始動AUTH必要と - 須藤のmongod --auth --port 27017 --dbpath /データ/ DB

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

次のように私は作品を知っているのMongoDBのJavaドライバー2.xのための認証手続き:

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

注2.xのドライバを使用してモンゴ3.2データベースにアクセスするためにあなたは、少なくともMongoDBのJavaドライバのバージョン2.14を必要とします(MongoDB compatibility info参照)。バージョン2.6.2は古すぎます。あなたはそれをアップグレードする必要があります。

+0

MongoCredentialはMongodbバージョン2.11以降のものです – abipc

+0

アップグレードは正しい方法です。 Tnx。 – abipc