gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 09:45:45 26 4
gpt4 key购买 nike

问 - 无法通过 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. 打开 shell - mongo --port 27017
  3. 使用管理员
  4. db.createUser({user:"abc",pwd:"abc",roles:[{role:"root",db:"admin"}]})
  5. 需要身份验证重新启动 - sudo 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());

结果

auth 总是出现 FALSE。

最佳答案

据我所知,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 compatibility info )。您的 2.6.2 版本太旧了。您需要升级它。

关于java - MongoDB Java 驱动程序身份验证 - 版本不匹配问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38051798/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com