尝试从Spring Boot docker容器连接到mongo docker容器时,对MongoCredential进行身份验证时出错?

时间:2020-04-08 20:45:10

标签: mongodb spring-boot docker docker-compose application.properties

对于连接到docker compose的{​​{1}},我有以下Spring boot container文件:

mongoDB container

在我的春季靴# # APIs #---------------------------------------------- pokerstats: image: pokerstats container_name: pokerstats ports: - 8080:8080 depends_on: - db # # Utilities #---------------------------------------------- db: image: mongo container_name: mongo volumes: - ./database:/data ports: - "27017:27017" environment: MONGO_INITDB_ROOT_USERNAME: admin MONGO_INITDB_ROOT_PASSWORD: admin MONGO_INITDB_DATABASE: pokerStats 中,我有:

application.properties

当我尝试使用邮递员到达终点时,出现以下错误:

server.port=8080
spring.main.allow-bean-definition-overriding=true

spring.data.mongodb.uri=mongodb://admin:admin@mongo:27017/pokerStats
spring.data.mongodb.authentication-database=admin
spring.data.mongodb.database=pokerStats

请注意,在我将以下内容添加到docker compose文件之前,此方法工作正常:

{
        "timestamp": "2020-04-07T17:39:19.129+0000",
        "status": 500,
        "error": "Internal Server Error",
        "message": "Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='pokerStats', password=<hidden>, mechanismProperties=<hidden>}; nested exception is com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=SCRAM-SHA-1, userName='admin', source='pokerStats', password=<hidden>, mechanismProperties=<hidden>}",
        "path": "/rounds"
    }

2 个答案:

答案 0 :(得分:1)

我能够通过添加以下内容解决此问题:

application.properties:

spring.data.mongodb.uri=mongodb://admin:admin@mongo:27017/pokerStats?authSource=admin
spring.data.mongodb.authentication-database = admin
spring.data.mongodb.database=pokerStats

我相信:?authSource=admin需要添加到mongo uri的末尾。

答案 1 :(得分:0)

您的错误消息指示authSource为pokerStats。但是根据我通过this找到的this在管理数据库中创建了用户。

所以,我假设此配置不正确:

spring.data.mongodb.authentication-database=admin

我不熟悉spring数据,所以我不知道如何正确配置它。