【问题标题】:Cloud Run connect to a self hosted MySql instance with SymfonyCloud Run 使用 Symfony 连接到自托管的 MySql 实例
【发布时间】:2021-06-24 02:09:04
【问题描述】:

我尝试从云运行连接到我的 MySql 实例,但是当我部署到云运行时,数据库的 ip 总是被替换。

我的连接字符串:

DATABASE_URL="mysql://root:test@202.x.x.x:3306/my_db?serverVersion=8.0"

然后如果尝试部署它会说:

SQLSTATE[HY000] [1045] 用户 'root'@'35.x.x.x' 的访问被拒绝(使用密码:YES)

这个IP 35.x.x.x貌似是google云IP,但是这个IP是哪里来的???当我再次部署时,还有另一个谷歌 IP。

【问题讨论】:

  • 你是如何连接的?通常,连接字符串中只使用主机名或 IP。您无法通过 LAN IP 或 localhost 连接?有关 DB 和 Web 服务器的更多详细信息可能会有所帮助(例如,在不同的数据中心,都在一台机器上,在同一个 LAN 上等)
  • 如果我在本地尝试过它可以工作,所以我可以连接到我的外部 MySql 实例。所以看起来这是一个 CloudRun 问题。服务器结构如下所示。 Google CloudRun 容器 -> 使用 MySql 的自托管 vServer(无 Google Cloud Server)。
  • 这很奇怪,我上周在 Cloud Run 上部署了一个 Symfony 应用程序,使用 Cloud SQL,我没有遇到任何类似的问题......而且我认为 Cloud Run 不会改变任何事情由它自己。也许与我们分享更多信息(构建,码头工人,...)
  • Cloudrun SQL 正在运行。但我说的是自托管 MySQL 实例。
  • 您能分享一下您是如何在代码中连接到数据库的吗?

标签: php mysql symfony google-cloud-platform google-cloud-run


【解决方案1】:

看起来这个IP 35.x.x.x 是谷歌云IP,但是在哪里 这个IP来自???

Google Cloud Run 是一种托管的无服务器容器服务。容器在提供授权、代理和负载平衡的 GFE (Google FrontEnd) 后面运行。 IP 地址是您容器前面的 Google 前端地址。

当我再次部署时,还有另一个谷歌 IP。

这是意料之中的。 Cloud Run 的基础架构支持成千上万的服务。部署不一定在完全相同的硬件上运行。预计 IP 地址会随时更改。

SQLSTATE[HY000] [1045] 用户 'root'@'35.x.x.x' 的访问被拒绝(使用 密码:是)

此错误由您的数据库报告。对您来说安全的解决方案很复杂。要允许访问,您必须对数据库中的用户具有GRANT 权限。如果您对用户的 IP 地址使用通配符,这不是最佳做法。我还假设您没有使用 TLS 连接,这意味着用户名和密码是通过 Internet 以明文形式发送的。

推荐

使用 Google Cloud Run 部署服务时,我不建议使用自托管数据库。这是 Cloud Run 与 Cloud SQL 的集成解决众多集成和安全问题的一个领域。

如果您必须使用自托管数据库,则选择有限:

  • 从任何 IP 地址授予用户访问权限。这不是一个好主意。实施加密连接。不允许来自世界各地的root 访问。创建一个专用用户并按计划轮换密码。
  • 实施代理以创建从 Cloud Run 到运行数据库的实例的安全加密连接。代理在与数据库相同的 VPC 中运行。运行数据库的实例没有公共 IP 地址,只有私有 IP 地址。
  • 设置静态出站 IP 地址。这使用了一个 VPC 连接器,该连接器将来自 Cloud Run 的流量路由到您项目的 VPC Cloud NAT 实例。有关更多信息,请参阅下面的链接。注意:此方法还可以支持直接访问数据库私有IP地址。

Access Control and Account Management

MySQL GRANT Statement

Configuring MySQL to Use Encrypted Connections

Cloud Run Static outbound IP address

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-28
    • 1970-01-01
    • 2020-07-01
    • 2020-11-20
    • 1970-01-01
    • 2020-05-17
    • 2020-05-27
    • 2021-12-25
    相关资源
    最近更新 更多