【问题标题】:How to access MongoDB values/data after binding to cloud foundry?绑定到 Cloud Foundry 后如何访问 MongoDB 值/数据?
【发布时间】:2016-12-27 17:27:00
【问题描述】:

我正在使用 spring boot 并使用 mongodb 数据库创建了一个 Web 应用程序。在本地,我使用命令提示符“mongod”和“mongo”来查询我在 UI 中输入的数据。

我当前的应用程序使用在 localhost 上运行的 MongoDb,默认端口为 27017。我的 Web 应用程序反映了存储在数据库中的数据。当我将此应用程序推送到 Cloud Foundry 并绑定 MONGODB 服务时,它使用了另一个数据库。我可以在哪里以及如何查看/访问正在输入的所有数据。在本地机器上,我可以使用 db.collection.find() 并查询我的所有数据。

问题

一旦我将我的应用程序推送到 Cloud Foundry,我在本地存储的所有数据都不会与之链接。我能够将值存储到 PCF MongoDB 中。但我不知道如何查看其中的数据。有什么命令或者方法可以查看我输入PCF MongoDB的所有数据吗?

尝试

查看我的 VCAP_SERVICES 我能够看到我的数据库名称、用户名和密码。但它们看起来像是被加密的,它有字母数字和连字符都混合在一起。下面的示例 VCAP 的外观(副本值,相同格式)

"database": "9faf201a-39b1-4lse-49242f404g11"
"host": "10.100.100.333"
"password": "2jnkj4nk22kk5lk6kj4n4k6nkj6001"
"username": "401849301k-8g3f-5c3j-k28-583920308592f04"

我尝试在 CLI 中使用以下代码

mongo someurl.mongodomain.com:45475/database_name -u username -p password

所以对于数据库名称、用户名和密码,我只是复制并粘贴了看起来加密的用户名和密码

mongo myurl.com:1337/9faf201a-39b1-4lse-49242f404g11 -u 401849301k-8g3f-5c3j-k28-583920308592f04" -p 2jnkj4nk22kk5lk6kj4n4k6nkj6001

我连接失败。也许我必须输入正确的用户名和密码。在哪里可以设置用户名和密码?我正在使用弹簧靴,它是自动为我处理的。因此,我从未创建过用户名或密码。

【问题讨论】:

  • 因为我无法发表评论。我想强调@DanielMikusa 提供的选项非常有效。 “使用 cf ssh 和 ssh 隧道。将 mongodb 实例绑定到应用程序,运行 cf env 以获取主机、端口和凭据(或制作服务密钥)。然后运行 ​​cf ssh -N -L :: app-name(您连接的应用程序并不重要,它只是我们正在通过隧道的应用程序)。现在将客户端连接到 localhost: 并使用您从 cf env 获得的凭据。”

标签: cloud-foundry


【解决方案1】:

这里有五个建议(感谢 Daniel.Mikusa 的最后一个):

  • 为 mongodb 推送 Web 客户端并将其绑定到您的数据库。 mongo express 似乎有一个 cloudfoundry 包装器:https://github.com/komushi/cf-mongo-express

  • 您可以使用 mongo 客户端程序以与连接到本地 mongodb 类似的方式连接到远程 mongodb。您可以在应用程序的环境中找到凭据(用户名、密码、数据库名):

    cf env <your-app-name>
    

    但是,您的 CloudFoundry 安装之外的机器可能会阻止对 mongodb 实例的访问。在这种情况下,您可能想尝试下一个选项。

  • 将安装了 mongo 客户端的 docker 容器推送到 cloudfoundry。 SSH 进入 docker 容器,并从那里使用 mongo 客户端。并非所有 cloudfoundry 安装都启用将 docker 容器推送到 CF。

  • 最后,您可以通过 REST 控制器公开您的域对象。可能使用弹簧数据休息:http://projects.spring.io/spring-data-rest/

  • 使用 cf ssh 和 ssh 隧道。将 mongodb 实例绑定到应用程序,运行 cf env 以获取主机、端口和凭据(或制作服务密钥)。然后运行cf ssh -N -L &lt;localport&gt;:&lt;service-fqdn-or-ip&gt;:&lt;remote-port&gt; app-name(您连接的应用程序并不重要,它只是我们正在通过隧道的应用程序)。现在将客户端连接到 localhost:&lt;localport&gt; 并使用您从 cf env 获得的凭据。

【讨论】:

  • 你好,使用你给我看的命令。它提供了也在 UI 中显示的 VCAP。数据库、用户名和密码被加密(字母和数字与连字符混合)。我如何才能登录到此服务器以查看、添加或更改数据?
  • 你怎么知道它们是加密的?通常,它们只是未加密的、随机生成的字符串。您的应用需要它们进行连接,因此您也可以在工作站上使用它们。你在 PWS 上吗?
  • 好的。刚看到你的编辑。数据库名称和用户名看起来像 UUID。密码可能已更改。如果您无法连接,那么出于安全原因,我想这在您的 cloudfoundry 安装之外被阻止了。在这种情况下,我会选择 Spring 数据休息。
  • 第五个选项是使用cf ssh 和隧道。将服务绑定到应用程序,运行cf env 以获取主机、端口和凭据(或制作服务密钥)。然后运行cf ssh -N -L &lt;localport&gt;:&lt;service-fqdn-or-ip&gt;:&lt;remote-port&gt; app-name(您连接的应用程序并不重要,它只是我们正在通过隧道的应用程序)。现在将客户端连接到localhost:&lt;localport&gt; 并使用您从cf env 获得的凭据。
  • @DanielMikusa。好想法。如果您不介意,我可以将此添加到答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
相关资源
最近更新 更多