java - JAVA com.mongodb.MongoQueryException:查询失败,错误代码 13 和错误消息“命令查找需要身份验证”
问题描述
com.mongodb.MongoQueryException:查询失败,错误代码 13 和错误消息“命令查找需要身份验证”
如何在 java 中使用密码创建 mongo 客户端。
我知道有这样的方法:
public MongoClient(final ServerAddress addr, final List<MongoCredential> credentialsList);
但它显示为已弃用,还有另一种需要 MongoClientOptions 的方法:
public MongoClient(final ServerAddress addr, final MongoCredential credential, final MongoClientOptions options)
但我没有任何发送选项。那么,有什么方法可以使用密码在 java 中创建 mongo 客户端?
解决方案
要执行 find 命令,您需要先使用 mongo 进行身份验证。您如何进行身份验证的示例:
Mongo mongo = new Mongo("localhost", 27017);
DB db = mongo.getDB("testdb");
boolean auth = db.authenticate("testdb", "password".toCharArray());
if (auth) {
DBCollection table = db.getCollection("user");
BasicDBObject document = new BasicDBObject();
document.put("name", "mkyong");
table.insert(document);
System.out.println("Login is successful!");
} else {
System.out.println("Login is failed!");
}
这应该适合你。
您可以查看本文中的示例代码:https ://www.mkyong.com/mongodb/java-authentication-access-to-mongodb/
使用 mongo-java-driver 时,以下是合适的: - 请注意,这不再使用已弃用的方法,而是将 writeconcern 设置为 Journaled(推荐)
String username = "test";
String database = "something";
String password = "secret";
MongoCredential mongoCredential = MongoCredential.createCredential(username, database, password.toCharArray());
MongoClientOptions options = MongoClientOptions.builder()
.writeConcern(WriteConcern.JOURNALED).build();
MongoClient mongoClient = new MongoClient(new ServerAddress("host1", 27017), Arrays.asList(mongoCredential), options);
推荐阅读
- android - 在文件夹Android java中显示文件
- ruby-on-rails - 应用程序遇到以下错误:getaddrinfo: Name or service not known (SocketError) in Kubernetes
- node.js - Node.js:如何延迟(不是睡眠)从一条线到另一条线以循环脉冲步进电机
- ios - 如何创建文本字段幻灯片启动应用程序
- django - 以用户身份登录时 Django 总是失败,而超级用户(管理员)总是成功
- arrays - 通过添加相邻元素使数组中的元素相等
- python - 使用 categorical_column_with_vocabulary_list 函数的 num_oov_buckets 选项处理样本外数据中缺失的分类级别
- node.js - MongoDB查询数组基于另一个字段的值
- python - 我无法理解 cross_val_score 和 accuracy_score 之间的区别
- oracle - PL/SQL 动态内容未在 Oracle Apex 中显示