连接到 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 按钮。

如前所述,此 Codelab 的大部分内容适用于所有 SQL 变种,但对于此 Codelab,请选择 PostgreSQL。

  1. 为实例指定 ID
  2. 选择您所在位置附近的区域
  3. 输入默认用户的密码(用户名将是所选数据库的默认用户名,例如 root(对于 MySQL)或 postgres(对于 PostgreSQL)
  4. 向下滚动,然后点击 show configuration options
  5. 展开“Connectivity”部分
  6. 确认 Public IP 处于勾选状态且 Private IP 处于未选中状态
  7. 点击 883b32ec2734de01 按钮
  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> 替换为您附近的 IP 地址,以及根用户“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…

参考文档