如何为mongoDB创建CUPS服务?

如何为mongoDB创建CUPS服务?,mongodb,uri,cloud-foundry,Mongodb,Uri,Cloud Foundry,我目前正在使用一个本地数据库。使用终端访问mongodb 这些是我所有的证件。在我的应用程序属性中,当我提供以下数据时,我能够检索和存储数据 spring.data.mongodb.database=myNewDB spring.data.mongodb.host=localhost spring.data.mongodb.port=27017 我正在尝试使用CloudFoundry CUPS将mongodb与URI连接起来。 但是按照URI指南,我缺少用户名和密码。我在哪里可以找到这些值?我

我目前正在使用一个本地数据库。使用终端访问mongodb

这些是我所有的证件。在我的应用程序属性中,当我提供以下数据时,我能够检索和存储数据

spring.data.mongodb.database=myNewDB
spring.data.mongodb.host=localhost
spring.data.mongodb.port=27017
我正在尝试使用CloudFoundry CUPS将mongodb与URI连接起来。 但是按照URI指南,我缺少用户名和密码。我在哪里可以找到这些值?我的所有数据目前都存储在本地,不希望使用Cloud Foundry提供的MongoDB,因为我必须再次手动输入这些数据

DB-TYPE://USERNAME:PASSWORD@HOSTNAME:PORT/NAME
mongo://don't:know@localhost:27017/myNewDB
尝试

在MongoShell中,我执行了以下操作来创建管理员

use admin
db.createUser(
   {
     user: "appAdmin",
     pwd: "password",
     roles:
       [
         { role: "readWrite", db: "myNewDB" },
         "clusterAdmin"
       ]
   }
)
在此之后,我在application.properties中添加了以下内容

spring.data.mongodb.username=appAdmin
spring.data.mongodb.password=password
运行应用程序时,我收到以下错误:

com.mongodb.MongoSecurityException: Exception authenticating MongoCredential{mechanism=null, userName='appAdmin', source='myNewDB', password=<hidden>, mechanismProperties={}}
    at com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:61) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.DefaultAuthenticator.authenticate(DefaultAuthenticator.java:32) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:99) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:44) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunnable.run(DefaultServerMonitor.java:128) ~[mongo-java-driver-3.2.2.jar:na]
    at java.lang.Thread.run(Unknown Source) [na:1.8.0_121]
Caused by: com.mongodb.MongoCommandException: Command failed with error 18: 'Authentication failed.' on server localhost:27017. The full response is { "ok" : 0.0, "code" : 18, "errmsg" : "Authentication failed." }
    at com.mongodb.connection.CommandHelper.createCommandFailureException(CommandHelper.java:170) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:123) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.SaslAuthenticator.sendSaslStart(SaslAuthenticator.java:95) ~[mongo-java-driver-3.2.2.jar:na]
    at com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:45) ~[mongo-java-driver-3.2.2.jar:na]
    ... 6 common frames omitted
com.mongodb.MongoSecurityException:MongoCredential{mechanism=null,userName='appAdmin',source='myNewDB',password=,mechanismProperties={}验证异常
在com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:61)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.DefaultAuthenticator.authenticate(DefaultAuthenticator.java:32)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.InternalStreamConnectionInitializer.authenticateAll(InternalStreamConnectionInitializer.java:99)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.InternalStreamConnectionInitializer.initialize(InternalStreamConnectionInitializer.java:44)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.InternalStreamConnection.open(InternalStreamConnection.java:115)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.DefaultServerMonitor$ServerMonitorRunName.run(DefaultServerMonitor.java:128)~[mongo-java-driver-3.2.2.jar:na]
在java.lang.Thread.run(未知源代码)[na:1.8.0_121]
原因:com.mongodb.MongoCommandException:命令失败,错误为18:“身份验证失败”。服务器本地主机:27017。完整响应为{“确定”:0.0,“代码”:18,“errmsg”:“身份验证失败”。}
在com.mongodb.connection.CommandHelper.createCommandFailureException(CommandHelper.java:170)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.CommandHelper.receiveCommandResult(CommandHelper.java:123)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.CommandHelper.executeCommand(CommandHelper.java:32)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.SaslAuthenticator.sendsalstart(SaslAuthenticator.java:95)~[mongo-java-driver-3.2.2.jar:na]
在com.mongodb.connection.SaslAuthenticator.authenticate(SaslAuthenticator.java:45)~[mongo-java-driver-3.2.2.jar:na]
... 省略了6个公共框架

但是当我从application.properties文件中删除用户名和密码时。我的应用程序将按预期运行。

您上下文中的用户名和密码表示MongoDB的用户名和密码。 MongoDB身份验证是可选的。您可以在无需身份验证的情况下启动mongod。但在生产系统中不建议这样做。 您可以为mongodb启用身份验证,并在其中创建要访问的用户。

您可以使用mongodb参数创建CUPS服务并将其绑定到应用程序。然后可以在环境变量VCAP_SERVICES中读取此服务。 System.getEnv(“VCAP_服务”); 如果使用SpringCloud,还可以编写自定义连接器来读取配置。

还请记住,您可能需要在CF中创建安全组,以打开将CloudFoundry连接到本地网络的端口。

我看到你说它是可选的。但是,如果我想用本地mongodb创建CUPS服务,它仍然是可选的吗?uri是什么样子的?我创建了一个用户名和密码,还为它指定了角色。但是当我添加spring.data.mongodb.username和password时。我收到身份验证错误。