查询失败的错误代码13带有名称'未经授权'在MongoDB中查找查询
我在Java J2EE应用程序中研究MongoDB驱动程序。以前,我们使用此依赖项:
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
现在我们使用
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.6.1</version>
</dependency>
了一个admin数据库,其中一个包含文档的集合。 这样的先前的连接方法是这样实现的:
MongoClient mongoClient = new MongoClient(serverList, Arrays.asList(MongoCredential.createCredential(username, "admin", password.toCharArray())), builder.build());
Morphia morphia = new Morphia();
morphia.getMapper().getOptions().setMapSubPackages(true);
morphia.mapPackage(entitiesPackage);
Datastore datastore = morphia.createDatastore(mongoClient, "mycollection");
现在我们有:
CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
CodecRegistry pojoCodecRegistry = CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), CodecRegistries.fromProviders(pojoCodecProvider));
MongoClient client = MongoClients.create(uri);
MongoCollection collection = client.getDatabase("admin").withCodecRegistry(pojoCodecRegistry).getCollection("mycollection");
使用此连接字符串:
mongodb://<username>:<password>@<mongodb_server_address>:27017
此连接是可以的此语法:
collection.find(MyEntity.class).first();
我们有一个错误:
Caused by: java.lang.RuntimeException: com.mongodb.MongoQueryException: Query failed with error code 13 with name 'Unauthorized' and error message 'not authorized on admin to execute command { find: "mycollection", filter: {}, limit: 1, singleBatch: true }' on server mongodb_server_address:27017
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:257)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:105)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:87)
... 8 more
它不是凭据
I working on mongodb driver migration in my Java J2EE application. Previously we use this dependencies :
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongo-java-driver</artifactId>
<version>3.4.2</version>
</dependency>
<dependency>
<groupId>org.mongodb.morphia</groupId>
<artifactId>morphia</artifactId>
<version>1.3.2</version>
</dependency>
Now we use this one
<dependency>
<groupId>org.mongodb</groupId>
<artifactId>mongodb-driver-sync</artifactId>
<version>4.6.1</version>
</dependency>
We have an admin database with one collection that containing documents.
The previous connection method was implemented like this :
MongoClient mongoClient = new MongoClient(serverList, Arrays.asList(MongoCredential.createCredential(username, "admin", password.toCharArray())), builder.build());
Morphia morphia = new Morphia();
morphia.getMapper().getOptions().setMapSubPackages(true);
morphia.mapPackage(entitiesPackage);
Datastore datastore = morphia.createDatastore(mongoClient, "mycollection");
And now we have :
CodecProvider pojoCodecProvider = PojoCodecProvider.builder().automatic(true).build();
CodecRegistry pojoCodecRegistry = CodecRegistries.fromRegistries(MongoClientSettings.getDefaultCodecRegistry(), CodecRegistries.fromProviders(pojoCodecProvider));
MongoClient client = MongoClients.create(uri);
MongoCollection collection = client.getDatabase("admin").withCodecRegistry(pojoCodecRegistry).getCollection("mycollection");
with this connection string :
mongodb://<username>:<password>@<mongodb_server_address>:27017
This connection is OK because in starting of my wildfly I can see the log who say Mongodb connected but when the application try to get data from mongodb database using this syntax :
collection.find(MyEntity.class).first();
we have this error :
Caused by: java.lang.RuntimeException: com.mongodb.MongoQueryException: Query failed with error code 13 with name 'Unauthorized' and error message 'not authorized on admin to execute command { find: "mycollection", filter: {}, limit: 1, singleBatch: true }' on server mongodb_server_address:27017
at io.undertow.servlet.core.DeploymentManagerImpl.deploy(DeploymentManagerImpl.java:257)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService.startContext(UndertowDeploymentService.java:105)
at org.wildfly.extension.undertow.deployment.UndertowDeploymentService$1.run(UndertowDeploymentService.java:87)
... 8 more
It's not credential because with older version everythings work fine and
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我这样解决了我的问题:
连接字符串:
I fix my probleme like this :
connection string :