java - 查询失败,错误代码为 13,服务器本地主机 :27017 上的错误消息为 'command find requires authentication'

标签 java spring mongodb spring-boot reactive

我在使用 MongoDB 和 Spring Boot 时遇到了奇怪的错误。 我使用响应式(Reactive) MongoDb 库 (spring-boot-starter-data-mongodb-reactive) 。 当我将 url 放入 application.yml 文件中时效果很好。

spring:
  data:
    mongodb:
      uri: mongodb://test01:test01@localhost/test_db

但是当我将它移动到 MongoConfig 类中时,应用程序抛出异常

@EnableReactiveMongoRepositories
public class MongoDBConfig  extends AbstractReactiveMongoConfiguration {
    @Bean
    public MongoClient mongoClient() {
        return MongoClients.create("mongodb://test01:test01@localhost/test_db?authMode=SCRAM-SHA-1");
    }

    @Override
    protected String getDatabaseName() {
        return "test_db";
    }
}

异常

Caused by: com.mongodb.MongoQueryException: Query failed with error code 13 and error message 'command find requires authentication' on server localhost:27017
    at com.mongodb.internal.operation.FindOperation$3.onResult(FindOperation.java:722) ~[mongodb-driver-core-4.0.4.jar:na]
    at com.mongodb.internal.operation.OperationHelper$ReferenceCountedReleasingWrappedCallback.onResult(OperationHelper.java:411) ~[mongodb-driver-core-4.0.4.jar:na]
    at com.mongodb.internal.operation.CommandOperationHelper$10.checkRetryableException(CommandOperationHelper.java:493) ~[mongodb-driver-core-4.0.4.jar:na]

在代码中使用时,连接字符串似乎不起作用。

你有什么想法吗? 请帮忙。

最佳答案

您应该指定 authSource 如下

mongodb://test01:test01@localhost/test_db?authSource=admin

关于java - 查询失败,错误代码为 13,服务器本地主机 :27017 上的错误消息为 'command find requires authentication',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62819386/

相关文章:

java - Spring Integration - FTP 下载后立即发送消息

java - 在 Java 项目中查找重复常量

javascript - 如何将 Node.js、MongoDb 和 Backbone.js 组合在一个应用程序中?

node.js - Mongo/Mongoose,关系存储

java - Hibernate 延迟加载 + Jersey REST = 急切加载?

java - Java中有没有检测到没有输入的异常?

java - Spring集成测试并将字段设置为 Controller

java - 我配置的这个 quartz 连接器一次只能选择一个文件吗

spring - 如何在 Spring Boot 中注入(inject) user_provided vcap_services

Mongodb:findById()没有返回值