JavaSpring/MongoDb仅在使用URI字段时有效
我的处境很奇怪。我正在运行一个连接到MongoDb实例的JavaSpring启动应用程序。当我使用JavaSpring/MongoDb仅在使用URI字段时有效,java,spring,spring-boot,spring-data,uri,Java,Spring,Spring Boot,Spring Data,Uri,我的处境很奇怪。我正在运行一个连接到MongoDb实例的JavaSpring启动应用程序。当我使用 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.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.database=这似乎不再受支持。 引用自: 如果使用Mongo3.0Java驱动程序,
spring.data.mongodb.host
和
spring.data.mongodb.port不受支持。在这种情况下,
spring.data.mongodb.uri应用于提供所有
配置
试试这个
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}
这对我有效。您是否尝试在spring.data.mongodb.port=
中拆分主机和端口?从文档中看,似乎主机和端口都是预期的:我没有添加端口,因为它只是默认值(27017)。没错,它说如果没有指定spring.data.mongodb.port,则使用默认值27017。您可以从前面显示的示例中删除此行。
。最初遗漏了该部分。用户或密码的URL表单是否包含任何%或+字符?否!用户名和密码只是数字和字母。主机名有一个“.”我试过了,运气不好。请注意,我还没有将其添加到URI中,但我仍然可以连接。如果我离开数据库,则身份验证失败。但我有多个数据库,这是有道理的。我试过设置数据库和身份验证数据库。仍然获取身份验证失败。您已经阅读了吗。31.2.1连接到MongoDB数据库。文档不正确。在我的底层环境中,使用.host和.port约定,我可以很好地连接。是我的高级环境(设置相同,使用完全相同的docker映像)不起作用。@SedkyA,似乎无法从“高级环境”访问您的数据库。@SedkyA,您能详细说明高级环境的含义吗?它本质上是一个群中节点较多的环境。这是无关紧要的,它只意味着它是另一个具有完全相同架构的环境。一个我可以使用host/user/pwd连接,另一个我必须使用URI