【问题标题】:How do I connect to my MySQL service on Pivotal Cloud Foundry (PCF) via MySQL Workbench or CLI or MySQLWeb Database Management App?如何通过 MySQL Workbench 或 CLI 或 MySQLWeb 数据库管理应用程序连接到 Pivotal Cloud Foundry (PCF) 上的 MySQL 服务?
【发布时间】:2019-06-14 11:49:26
【问题描述】:

我有一个基于Spring BootREST 应用程序部署在Pivotal Cloud Foundry (PCF) 上并且工作正常。但是这个 REST 应用程序直到现在还没有任何数据库连接。因此,我决定在市场上的PCF 上安装MySQL 服务,并最终成功地将其绑定到我的应用程序。

但是,问题是我无法通过CLI 或任何其他GUI 连接到这个新创建的MySQL 实例。

到目前为止,我已经关注了以下链接,但没有运气。

我为实现此目的而执行的步骤是:

  1. MySQL 成功创建服务实例
  2. MySQL的服务实例绑定到应用程序成功(见上面cf services命令结果)

    #cf 服务

    命名服务计划绑定应用的最后一次操作

    my-mysql-db             cleardb          spark      agrisell-rest-app   create succeeded
    
  3. 成功推送我的应用,可以成功点击REST API

    https://agrisell-rest-app.cfapps.io/hello

  4. 在宿主应用上使用cf enable-ssh agrisell-rest-app成功启用ssh

  5. 使用cf create-service-key my-mysql-db my-mysql-db-service-key创建服务密钥(创建后获取服务密钥的命令如下)

    # cf service-keys my-mysql-db

    名称 我的-mysql-db-service-key

  6. 使用以下命令检索服务密钥和数据库凭据

cf service-key my-mysql-db my-mysql-db-service-key

{
 "hostname": "us-cdbr-iron-east-01.cleardb.net",
 "jdbcUrl": "jdbc:mysql://us-cdbr-iron-east-01.cleardb.net/ad_b509d7f388732d5?user=hello123\u0026password=world456",
 "name": "ad_b509d7f388732d5",
 "password": "world456",
 "port": "3306",
 "uri": "mysql://b311794a3c31eb:ca7ad71f@us-cdbr-iron-east-01.cleardb.net:3306/ad_b509d7f388732d5?reconnect=true",
 "username": "hello123"
}
  1. 配置SSH隧道成功

    cf ssh -L 63306:us-cdbr-iron-east-01.cleardb.net:3306 agrisell-rest-app

  2. 通过CLI访问服务实例

    vcap@33eb3942-10bd-4068-650f-64fc:~$ mysql -u hello123 -h 0 -p -D ad_b509d7f388732d5 -P 63306 bash:mysql:找不到命令

基于上述错误,我感觉好像没有正确安装 mysql 插件,但我已经安装了它们。

# cf plugins
Listing installed plugins...

plugin   version   command name   command help
mysql    2.0.0     mysql          Connect to a MySQL database service
mysql    2.0.0     mysqldump      Dump a MySQL database

Use 'cf repo-plugins' to list plugins in registered repos available to install.

第二种方法:

我尝试的第二种方法是通过MySQL Workbench 连接到PCF MySQL DB,它与MySQL 服务器安装捆绑在Windows 上。 我用它连接到我的本地MySQL DB。我修改了设置以将其指向主机、数据库并更改了凭据并尝试连接,但也不起作用。

第三种方法

我尝试的第三种方法是安装 Pivotal MySQL Web Database Management 工具,该工具来自 PCF 文档之一

https://docs.pivotal.io/p-mysql/2-2/use.html#mysqlweb

我将它安装在我的 Windows 10 机器上(没有将其部署到 PCF)并尝试登录,但也失败了。

第二种方法尝试但失败了

根据您的回复 Arun,我遵循了此处自述文件 (https://github.com/pivotal-cf/PivotalMySQLWeb) 中提到的所有说明,但它不允许我使用数据库 URL 和凭据登录到应用程序。第一次使用凭据admin/cfmysqlweb 登录有效,但需要数据库凭据和密码的登录页面将我发送回第一个登录屏幕,并显示“凭据错误”消息。截图如下。

在 PCF 上部署 PivotalMysqlWeb 并将其绑定到数据库实例

使用 admin/cfmysqlweb 凭据成功进行基本身份验证后现在显示的登录页面

在上面输入的数据库凭据并在提交时我被带回第一个登录页面(回到第一格)

【问题讨论】:

  • 如果您使用的是 ClearDb,则不需要任何这些。 ClearDb 提供公共 IP,您可以通过这些 IP 从 Internet 上的任何位置访问您的服务。因此,您可以直接在本地 PC 上通过mysql 或 MySQL Workbench 与您的数据库进行交互。
  • 如果您使用不同的 MySQL 提供程序,那么您的里程会有所不同。不同提供不同的句柄访问。在 PWS 上,如果您使用 Pivotal 托管的 MySQL,则这只允许从您的应用容器内部进行访问。这就是您需要使用cf ssh 并设置隧道或推送诸如 Pivotal MySQL Web 或 PHPMyAdmin 之类的应用程序来管理您的数据库的地方。
  • 是的,我能够通过 MySQL Workbench 连接到 ClearDb。但是即使在正确指定了主机名、端口和凭据之后,我的应用程序也无法连接到它。此外,ClearDb 数据库也是旧版本的 MySQL 5.x。

标签: mysql cloud-foundry pivotal-web-services pcfdev


【解决方案1】:

您无法使用 PC/笔记本电脑中的工具连接任何 Marketplace service(就像您使用 MySQL 应用程序所做的那样)

原因是 PCF 中的任何 Marketplace 服务都可以在任何地方运行,您只需提供一个 instance 即可。

出于安全目的,您的 Marketplace 服务(您订购的 .. 您支付的)仅暴露给特定的 PCF Foundation ..

如果您仍想连接到 MySQL 并查看您的数据库,我建议您使用 PivotalMySQLWeb tool 。您必须在同一个PCF-space 中上传此应用程序并将其绑定到您在space 中创建的MySQL DB Instance。你可以在他们的README file查看很多说明

【讨论】:

  • 感谢阿伦的解释。关于如何通过 SSH 使用 CLI 进行连接的任何想法?
  • 您必须在您的系统中安装 CF CLI 工具并可以登录到 PCF ...登录后您可以使用 cf ssh 命令通过 SSH 登录到那里运行的应用程序
  • 我已经安装了它,并且在上述步骤中我已经可以通过 SSH 连接到系统。唯一的问题是我无法通过 MySQL CLI 客户端访问 MySQL,我已经提到过。
  • 您无法使用 CLI 工具执行此操作,但可以使用 Pivotal 的 Web UI 工具。我更新了我的答案。请看一下
  • @Nital 我可以确认这个应用程序就像一个魅力。您所要做的就是: 1) 更改manifest.yml 文件,将pas-mysql 数据库名称替换为您的mysql 服务名称。 2)将此应用程序推送到您的空间。 PCF 会自动绑定数据库。 3) 访问应用程序并使用 admin/cfmysqlweb 登录。非常感谢阿伦。对问题和答案都投了赞成票。
【解决方案2】:

我安装了 MySQL Workbench 并创建了一个新连接。然后从PCF上的服务详细信息中填写详细信息(您发布的那些)

{
 "hostname": "us-cdbr-iron-east-01.cleardb.net",
 "jdbcUrl": "jdbc:mysql://us-cdbr-iron-east-01.cleardb.net/ad_b509d7f388732d5?user=hello123\u0026password=world456",
 "name": "ad_b509d7f388732d5",
 "password": "world456",
 "port": "3306",
 "uri": "mysql://b311794a3c31eb:ca7ad71f@us-cdbr-iron-east-01.cleardb.net:3306/ad_b509d7f388732d5?reconnect=true",
 "username": "hello123"
}

所以在你的情况下:

主机:us-cdbr-iron-east-01.cleardb.net

用户名:hello123

密码:world456

默认架构:ad_b509d7f388732d5 端口:3306

有趣的是,默认模式需要匹配“名称”属性。我输入了一个自定义名称,但无法连接。不太清楚为什么,但你能做什么。

【讨论】:

    【解决方案3】:

    如果有人想从 IntelliJ 连接 aws-rds-mysql(从 Pivotal Cloud Foundry 实例化),请执行以下步骤:

    创建 ssh 隧道后,您可以从 localhost 的 63306 端口访问 AWS-RDS 数据库,按照说明将 DB 与 DB Navigator 插件 (intelliJ) 连接

    • 在 intelliJ(社区版)中安装 DB Navigator 插件,如果您 还没有安装-> https://plugins.jetbrains.com/plugin/1800-database-navigator
    • 在 intelliJ 中连接到 AWS RDS -> 注意连接是通过 端口 63306 上的本地主机
      • 转到 DB Navigator 插件并单击新连接下的自定义。
      • 输入网址为:jdbc:mysql://:@localhost:63306/

    也可以通过GitHub获取步骤

    【讨论】:

      猜你喜欢
      • 2018-03-14
      • 1970-01-01
      • 1970-01-01
      • 2017-09-07
      • 1970-01-01
      • 2019-03-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多