使用专用 IP 连接到 Cloud SQL for MySQL 实例

本页面介绍如何使用专用 IP 创建并连接到 MySQL 实例。如果您及时完成本快速入门中的步骤(包括清理),那么在此期间所创建资源的费用通常不会超过一美元。


如需在 Google Cloud 控制台中直接遵循有关此任务的分步指导,请点击操作演示

操作演示


准备工作

  1. 登录您的 Google Cloud 账号。如果您是新手 Google Cloud, 请创建一个账号来评估我们的产品在 实际场景中的表现。新客户还可获享 $300 赠金,用于 运行、测试和部署工作负载。
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator role (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  5. Verify that billing is enabled for your Google Cloud project.

  6. 验证您是否拥有完成本快速入门所需的权限 。
  7. 启用必要的 Google Cloud API。

    控制台

    在 Google Cloud 控制台中,前往 API 页面。

    转到“API”

    启用 Cloud SQL Admin API。 通过启用此 API,您可以运行 Cloud SQL Auth 代理。

    gcloud

    点击以下按钮打开 Cloud Shell,以通过命令行直接在浏览器中访问您的 Google Cloud 资源。Cloud Shell 可用于运行本快速入门中介绍的 gcloud 命令。

    打开 Cloud Shell

    按照以下方式使用 Cloud Shell 运行 gcloud services enable 命令,以启用本快速入门所需的 API。

    gcloud services enable sqladmin.googleapis.com

    此命令会启用以下 API:

    • Cloud SQL Admin API。通过启用此 API,您可以运行 Cloud SQL Auth 代理。

所需的角色

如需获得设置使用专用 IP 地址的 Cloud SQL 所需的权限,请让管理员向您授予您要设置和连接到的项目的以下 IAM 角色:

  • 创建或删除实例、数据库和用户: Cloud SQL 管理员角色 (roles/cloudsql.admin)。
  • 创建或删除 IAM 服务帐号: IAM Service Account Administrator 角色 (roles/iam.serviceAccountAdmin)。
  • 创建或删除计算实例:
  • 创建连接:
    • Service Networking Admin (roles/servicenetworking.networksAdmin))
    • Service Usage Admin (roles/serviceusage.serviceUsageAdmin)。

如需详细了解如何授予角色,请参阅管理对项目、文件夹和组织的访问权限

您也可以通过自定义角色或其他预定义角色来获取所需的权限。

概览

您可以通过多种方式使用专用 IP 地址连接到 Cloud SQL 实例,具体取决于来源所在的位置。关键因素是源机器必须与 Cloud SQL 实例位于同一 VPC 网络中。如果来源不在 Google Cloud 中或不在同一 Google Cloud 项目中,则您必须以不同于此处的方式配置连接

在本快速入门中,我们将通过最直接的路径配置连接。来源和目标位于同一 Google Cloud 项目和同一 VPC 网络中。我们创建一个使用专用 IP 地址(目标)和 Compute Engine 虚拟机(来源)的 Cloud SQL 实例。我们使用虚拟机安装和使用从虚拟机连接到 Cloud SQL 实例所需的工具。

执行以下操作:

  1. 创建使用专用 IP 地址的 Cloud SQL 实例

    查找并保存实例的 connection name 以供日后使用。

  2. 创建 Compute Engine 虚拟机
  3. 打开与 Compute Engine 虚拟机的两个 SSH 连接

    您将使用第一个窗口来安装 mysql 并安装和启动 Cloud SQL Auth 代理。然后,您将使用第二个窗口,通过连接到 Cloud SQL Auth 代理来连接到 Cloud SQL 实例。

  4. 在 SSH 窗口 #1 中,执行以下操作:
    1. 安装 MySQL 客户端
    2. 安装 Cloud SQL Auth 代理

      Cloud SQL Auth 代理充当 mysql 客户端和 Cloud SQL 实例之间的连接器。

    3. 启动 Cloud SQL Auth 代理

      成功后,Cloud SQL Auth 代理会监听连接请求。

  5. 在 SSH 窗口 2 中,通过将 mysql 客户端连接到 Cloud SQL Auth 代理来连接到 Cloud SQL 实例

    成功后,您会在此窗口中看到 mysql 提示符,并在 SSH 窗口 #1(运行 Cloud SQL Auth 代理)中看到一条成功的连接消息。

  6. 清理

创建使用专用 IP 地址的 Cloud SQL 实例。

如需创建使用专用 IP 连接的实例,请执行以下操作:

  1. 在 Google Cloud 控制台中,前往 Cloud SQL 实例 页面。

    转到“Cloud SQL 实例”

  2. 选择 **MySQL** 标签页,然后在 Sandbox 框中点击创建沙盒实例 。或者,您可以点击创建实例 然后执行以下操作:
    1. 点击选择 MySQL
    2. 选择 Enterprise 版本。
    3. 选择 Sandbox 预设。
  3. 如果系统提示您启用 Compute API,请点击 启用 API 按钮。
  4. 实例信息 部分,输入实例 ID 的名称。
  5. 为根用户输入密码。记下您创建的密码 ,因为您稍后需要用到它。
  6. 选择区域和可用区可用性 部分中,选择 单可用区 选项。
  7. 展开显示配置选项
  8. 展开连接
  9. 清除公共 IP
  10. 选择专用 IP
  11. 选择专用服务访问通道 (PSA)
  12. VPC 网络 下拉列表中,选择默认
  13. 如果您使用的是新项目,系统会显示消息: 网络连接未设置,并且一个名为网络 设置确认所需的框会引导您前往 VPC 文档,以设置 PSA
    1. 在 Google Cloud 控制台中,前往 VPC 网络 页面:

      进入 VPC 网络页面

    2. 选择默认 VPC 网络。
    3. 设置允许访问 TCP 端口 22 的防火墙规则:
      1. 选择防火墙 标签页。
      2. VPC 防火墙规则 下,选择创建 VPC 防火墙规则
      3. 为防火墙规则命名。
      4. 目标 下,选择网络中的所有实例
      5. 来源 IPv4 范围下,输入0.0.0.0/0
      6. 协议和端口下,勾选TCP,然后在 正下方的端口框中输入22
      7. 选择创建
    4. 分配 IP 地址范围
      1. 选择专用服务访问通道 标签页。
      2. 专用服务访问通道 标签页中,选择为服务分配的 IP 范围 标签页。
      3. 点击分配 IP 范围
      4. 输入分配的范围的名称 ,并可选择输入说明
      5. 如需让 Google 选择可用范围,请选择自动
      6. 输入介于 16 和 124 之间的前缀长度(分配的地址数量 等于 2 的 (32 - 前缀长度) 次方)。
      7. 点击分配 以创建分配的范围。
    5. 创建专用连接
      1. 专用服务访问通道 标签页中,切换到连到服务的专用连接 标签页。
      2. 点击创建连接 按钮。
      3. 创建专用 连接框指定的分配范围 下拉列表中,选择您刚刚创建的 IP 地址范围的名称。
      4. 点击连接
    6. 创建连接后,返回到您创建 Cloud SQL 实例的位置,然后点击 确认连接
  14. 成功创建 PSA 连接后,点击 创建实例

系统会将您转到实例“概览”页面,因为新实例正在创建中。

实例创建完成后,滚动到连接到此实例 部分,然后保存实例的连接名称connection name 的格式为 projectID:region:instanceID。稍后您将在启动 Cloud SQL Auth 代理时使用此 connection name

创建 Compute Engine 虚拟机

请按照以下步骤创建虚拟机:

  1. 在 Google Cloud 控制台中,前往虚拟机实例 页面。

    转到“虚拟机实例”

  2. 点击创建实例
  3. 输入实例的名称
  4. 在导航窗格中选择数据保护 ,然后选择无备份
  5. 在导航窗格中选择安全性 ,然后在访问权限范围 下, 选择授予对所有 Cloud API 的完整访问权限
  6. 点击创建 并等待虚拟机完成创建。

打开与 Compute Engine 虚拟机的两个 SSH 连接

我们在虚拟机中使用两个窗口。第一个窗口用于安装 mysql 客户端和 Cloud SQL Auth 代理,获取实例连接名称,然后使用此名称启动代理。第二个窗口用于通过代理连接到 Cloud SQL 实例。

  1. 展开 Compute Engine 虚拟机实例的连接列中的 SSH 菜单。
  2. 选择在浏览器窗口中打开以打开 SSH 窗口 #1。

    窗口中的提示可能需要几秒钟才能使用。

  3. 出现提示时,输入 pwd 以验证您是否位于 /home/$USER 目录中。

    在该窗口中,您将安装 mysql 客户端和 Cloud SQL Auth 代理,并启动 Cloud SQL Auth 代理。

  4. 再次选择在浏览器窗口中打开,以打开 SSH 窗口 #2。

    您将使用此窗口连接到 Cloud SQL 实例。

安装 mysql 客户端

使用 SSH 窗口 #1 执行此步骤。

使用软件包管理器安装 MySQL 客户端并停止 mysqld 服务器:

sudo apt-get update
sudo apt-get install default-mysql-client
  

安装 Cloud SQL Auth 代理

使用 SSH 窗口 #1 执行此步骤。

  1. 安装 wget
    sudo apt-get install wget
        
  2. 下载 Cloud SQL Auth 代理:
    wget https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.8.2/cloud-sql-proxy.linux.amd64 \
    -O cloud-sql-proxy
      
  3. 使 Cloud SQL Auth 代理可执行:
    chmod +x cloud-sql-proxy
      

启动 Cloud SQL Auth 代理

使用 SSH 窗口 #1 执行此步骤。

启动 Cloud SQL Auth 代理,以便您可以监控其输出。将 INSTANCE_CONNECTION_NAME 替换为您在创建 Cloud SQL 实例时复制的 connection name

./cloud-sql-proxy --private-ip INSTANCE_CONNECTION_NAME

Cloud SQL Auth 代理成功启动后,SSH 窗口中会显示以下类似消息:

Listening on 127.0.0.1:3306 for myInstance
Ready for new connections

连接到您的 Cloud SQL 实例

使用 SSH 窗口 #2 执行此步骤。

运行以下命令:

mysql -u root -p --host 127.0.0.1 --port 3306

Enter password: 提示符处,输入 MySQL 根用户账号的密码。

验证 MySQL 提示是否显示。您已使用 mysql 客户端连接到数据库。

返回到您启动了 Cloud SQL Auth 代理的终端窗口。您应该会看到如下所示的消息:

New connection for myInstance

清理

为避免因本页中使用的资源导致您的 Google Cloud 账号产生费用,请按照以下步骤操作。

  1. 在 Google Cloud 控制台中,前往 Cloud SQL 实例页面。

    转到“Cloud SQL 实例”

  2. 选择 myinstance 实例以打开实例详情页面。
  3. 在页面顶部的图标栏中,点击删除
  4. 删除实例窗口中,输入实例的名称,然后点击删除

可选的清理步骤

如果您没有使用在本快速入门中启用的 API,则可以将其停用。

  • 在本快速入门中启用的 API:
    • Cloud SQL Admin API
  1. 在 Google Cloud 控制台中,前往 API 页面。

    转到“API”

  2. 选择 Cloud SQL Admin API,然后点击停用 API 按钮。

  3. 在 Google Cloud 控制台中,前往虚拟机实例页面。

    转到“虚拟机实例”

  4. 选择实例的名称。

  5. 更多操作菜单中,选择删除

后续步骤

您可以根据自己的需求详细了解如何创建 Cloud SQL 实例

您还可以了解如何为 Cloud SQL 实例创建 MySQL 用户数据库

此外,您还可以了解如何从其他 Google Cloud 应用连接到 Cloud SQL 实例: