连接到 Cloud SQL:公共 IP 和已获授权的网络

1. 简介

上次更新日期:2020 年 5 月 4 日

考虑连接

市面上有许多类型的应用和框架。在此 Codelab 中,我们将介绍如何从任何位置连接到 Cloud SQL。通过明确授权允许连接的 IP 地址,即可启用连接功能。可以说,这是连接到 Cloud SQL 数据库的最不安全的选项,但也是最容易设置和开始使用的选项。

有时,在生产环境中必须这样做,但如果可以避免,您应选择更安全的替代方案(例如使用 Cloud SQL 代理)。此设置最适合开发和测试。

构建内容

此 Codelab 非常简洁。我们的目标是让您了解连接部分的细节,而无需过多考虑应用本身。在理想情况下,连接到 Cloud SQL 就像连接到任何其他 SQL 数据库实例一样,因此您应该能够将在此 Codelab 中创建的内容应用于任何生产应用。

本指南将详细介绍如何在 GCP 控制台中执行操作,同时还会提供可在 CLI 或自动化环境中使用的等效 gcloud 命令。

具体步骤如下:

  • 创建 Cloud SQL 实例(本教程使用 Postgres,但同样适用于 MySQL 或 SQL Server),并授权允许连接到该实例的特定 IP

所需条件

  • 您有权在其中启用 API 和创建服务的 GCP 账号
  • 已安装的 Postgres 客户端,用于验证连接性(如果您想使用 MySQL 而不是 Postgres,则为 MySQL 客户端)

2. 创建 Cloud SQL 实例

Cloud SQL 是我们的托管关系型数据库产品。它支持 MySQL、PostgreSQL 和 SQL Server。在此 Codelab 中,我们将创建一个 Postgres 数据库,但对于所有这三种数据库,相关说明都类似。

在控制台中

前往 Cloud SQL 页面,然后点击 241836b315e11bf5.png 按钮。

如前所述,此 Codelab 的大部分内容适用于任何 SQL 风格,但在此 Codelab 中,请选择 PostgreSQL。

  1. 为实例提供一个 ID
  2. 选择离您最近的区域
  3. 为默认用户输入密码(用户名将是所选数据库的默认用户名,例如 MySQL 的 root 或 PostgreSQL 的 postgres
  4. 向下滚动,然后点击 show configuration options
  5. 展开 Connectivity 部分
  6. 确认 Public IP 已勾选,且 Private IP 未勾选
  7. 点击 883b32ec2734de01.png 按钮
  8. 获取您连接时所用的 IP 地址。最简单的方法是直接在 Google 中搜索“我的 IP 地址是什么”,搜索结果中会显示您的面向公众的 IP 地址。
  1. 在网络字段中输入 IP 规范,根据需要为其命名,然后点击 New Network 框中的“完成”。
  2. 向下滚动,然后点击“创建”

实例通常需要几分钟才能启动。

实例创建完成后,在列表中点击该实例,然后在概览页面上的 Connect to this instance 标题下,复制其中列出的 public IP address。即使您可以在实例完全实例化之前点击进入详细信息,但该实例在完全创建之前不会显示在列表中。

使用 gcloud

首先,您需要获取要授权连接到 Cloud SQL 实例的 IP 地址。最简单的方法是打开浏览器,搜索“我的 IP 地址是什么”,搜索结果中会显示您的面向公众的 IP 地址。不过,如果您无法从当前位置打开浏览器,可以使用 dig 等实用程序。

dig @resolver1.opendns.com ANY myip.opendns.com +short -4

您需要为 Cloud SQL 实例指定最靠近您所在位置的区域。您可以运行以下命令来查看区域列表:

gcloud sql tiers list

每个层级仅在某些地区提供。在本教程的 gcloud 部分,我们仅创建了一个微实例,因此您可以通过运行以下命令来查找此层级的可用区域(前提是您已安装 grep):

gcloud sql tiers list | grep db-f1-micro

然后,用于创建实例的命令如下所示(请务必将 <AUTHORIZED_IP> 替换为您从浏览器或 dig 获取的 IP,将 <REGION> 替换为离您较近的区域,并为根用户“postgres”设置密码):

gcloud sql instances create sql-codelab-00 --database-version=POSTGRES_11 --tier=db-f1-micro --region=<REGION> --authorized-networks=<AUTHORIZED_IP> --root-password=<PASSWORD>

此命令需要几分钟才能完成。

完成后,CLI 上的输出将列出实例的 PRIMARY_ADDRESS。复制该网址以供下一步使用。

3. 测试连接并总结

如需验证实例是否已正确设置,您可以在输入了 IP 地址的计算机上从命令行运行以下命令:

psql "host=<从上一步复制的 IP> port=5432 sslmode=disable user=postgres"

然后,指定您在创建 Cloud SQL 实例时设置的默认用户密码。

恭喜!如果一切顺利,您应该会看到 Postgres 提示,并且可以针对数据库运行命令。

后续操作

查看下列 Codelab…

参考文档