2

环境

弹簧启动 1.3.2

春天-mongo 0.8.0

用 gradle 构建我的 spring-boot 微服务。

问题

mongo 数据库之一启用身份验证,所以我在 application.yml 中配置这些参数

spring: data: mongo: username:xxx password:xxx authentication-database:xxx

它适用于已设置身份验证的 mongodb。

但是我得到了 mongdb 的错误, 即使我设置了用户名 =“”,密码 =“”,它也没有设置身份验证。它因身份验证而失败。

引起:com.mongodb.CommandFailureException: { "serverUsed" : "localhost:27017" , "ok" : 0.0 , "code" : 18 , "errmsg" : "Authentication failed."} at com.mongodb.CommandResult.getException (CommandResult.java:76) ~[mongo-java-driver-2.13.3.jar:na] at com.mongodb.CommandResult.throwOnError(CommandResult.java:140) ~[mongo-java-driver-2.13.3. jar:na] 在 com.mongodb.DBPort$SaslAuthenticator.authenticate(DBPort.java:903) ~[mongo-java-driver-2.13.3.jar:na] 在 com.mongodb.DBPort.authenticate(DBPort.java:第436章~[mongo-java-driver-2.13.3.jar:na]在com.mongodb.DBPort.checkAuth(DBPort.java:447)~[mongo-java-driver-2.13.3.jar:na]在com.mongodb.DBTCPConnector.doOperation(DBTCPConnector.java:207) ~[mongo-java-driver-2.13.3.jar:na] 在 com.mongodb。DBCollectionImpl.createIndex(DBCollectionImpl.java:392) ~[mongo-java-driver-2.13.3.jar:na] at com.mongodb.DBCollection.createIndex(DBCollection.java:597) ~[mongo-java-driver-2.13 .3.jar:na]

我的问题是如何为这些未设置身份验证的 mongo db 删除 mongo.username,password 密钥动态?

我也很好奇为什么不能删除 application.yml 文件中的键。而在本文档中看到我们可以使用 Maven 或 gradle 自动扩展属性:属性扩展

如果只是将这些键留空,则更新,仍然会出错

完整的响应是 { "ok" : 0.0, "errmsg" : "Invalid database name: ''", "code" : 73 }}}]

4

1 回答 1

2

与@bart.s 交谈后,使用弹簧型材解决此问题。当连接到启用身份验证的mongo db时,需要像这样在application.yml中激活profiles.config配置文件键

--- 
spring:
    profiles: prod
    data:
         mongodb:
           username: ${MONGO_USERNAME:mongo}
           password: ${MONGO_PASSWORD:mongo}
           authentication-database: ${MONGO_AUTH:admin}      

当使用 auth.add "--spring.profiles.active=prod" 连接到 mongo 以激活 mongodb 用户名和密码连接信息。

于 2016-10-12T12:50:31.180 回答