【问题标题】:Java Spring / MongoDb only works when using URI fieldJava Spring / MongoDb 仅在使用 URI 字段时有效
【发布时间】:2019-01-11 14:47:33
【问题描述】:

我的情况很奇怪。我正在运行一个连接到 MongoDb 实例的 Java spring-boot 应用程序。当我使用

spring.data.mongodb.uri=mongodb://{username}:{password}@{host}

字段,我连接正常。但是当我使用时:

spring.data.mongodb.host={host}
spring.data.mongodb.username={username}
spring.data.mongodb.password={password}

我的身份验证失败。是什么赋予了?当然大括号里的值是完全一样的。

我在这两种设置中都包含了这些:

spring.data.mongodb.authentication-database={auth-db}
spring.data.mongodb.database={mydb}

其他详情

非 uri 方法适用于一种环境,但不适用于我要修复的环境。

在同一个 Docker Swarm 中运行两台服务器

Mongo ReplicaSet 4.0.4 版

Java 8

【问题讨论】:

  • 你尝试拆分spring.data.mongodb.port=中的主机和端口吗?从文档来看,似乎主机和端口都是预期的:docs.spring.io/spring-boot/docs/current/reference/html/…
  • 我没有添加端口,因为它只是默认的(27017)。
  • 你是对的,它说If spring.data.mongodb.port is not specified, the default of 27017 is used. You could delete this line from the example shown earlier.。最初错过了那部分。
  • 用户或密码的 URL 形式是否包含任何 % 或 + 字符?
  • 不!用户名和密码只是数字和字母。主机名有一个“。”

标签: java spring spring-boot spring-data uri


【解决方案1】:

似乎不再支持此功能。 引用自docs.spring.io - 31.2.1 Connecting to a MongoDB Database

如果您使用 Mongo 3.0 Java 驱动程序,spring.data.mongodb.host 和 不支持spring.data.mongodb.port。在这种情况下, spring.data.mongodb.uri 应用于提供所有 配置。

【讨论】:

  • 文档不正确。我可以在我的较低环境中使用 .host 和 .port 约定很好地连接。这是我的高级环境(设置相同,使用完全相同的 docker 映像)不起作用。
  • @SedkyA,您的数据库似乎无法从您的“高级环境”访问。
  • @SedkyA,你能详细说明更高的环境是什么意思吗?
  • 它本质上是一个在 Swarm 中有更多节点的环境。这无关紧要,这意味着它是另一个具有完全相同架构的环境。一个我可以使用 host/user/pwd 连接,另一个我必须使用 URI
【解决方案2】:

我无法评论,所以必须回答。

尝试添加您的数据库名称?希望工作。 spring.data.mongodb.database=

【讨论】:

  • 我试过没有运气。请注意,我尚未将其添加到 URI,但我仍然可以连接。
  • 如果我离开数据库,我会遇到身份验证失败。但我有多个数据库。
  • 这是有道理的。我已经尝试过设置数据库和身份验证数据库。仍然出现身份验证失败。
  • 您是否已经阅读过docs.spring.io/spring-boot/docs/current/reference/html/…。 31.2.1 连接 MongoDB 数据库。
【解决方案3】:

试试这个

spring.data.mongodb.host={host}
spring.data.mongodb.port={port}
spring.data.mongodb.username={username}
spring.data.mongodb.password={password}
spring.data.mongodb.database={database}

这对我有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-24
    • 2018-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-12-10
    • 2016-07-06
    • 2022-06-17
    相关资源
    最近更新 更多