繁体   English   中英

MongoDB Java驱动程序身份验证-版本不匹配问题?

[英]MongoDB Java driver Authentication - Version mismatch issue?

问-无法通过Mongo Java驱动程序进行身份验证。 在mongo shell上一切正常。

MongoDB服务器版本 -

db version v3.2.6

Java Mongodb驱动程序Maven依赖关系

version 2.6.2

这就是我所做的 -

  1. 启动MongoDB-sudo mongod --port 27017 --dbpath / data / db
  2. 打开外壳-mongo --port 27017
  3. 使用管理员
  4. db.createUser({user:“ abc”,pwd:“ abc”,roles:[{role:“ root”,db:“ admin”}]})
  5. 使用必需的auth重新启动-sudo mongod --auth --port 27017 --dbpath / data / 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());

结果

auth总是错误的。

我知道的MongoDB Java驱动程序2.x的身份验证过程如下:

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

关于使用2.x驱动程序访问Mongo 3.2数据库的注意事项,您至少需要MongoDB Java驱动程序版本2.14(请参阅MongoDB兼容性信息 )。 您的版本2.6.2太旧了。 您需要升级它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM