对 MySQL 数据库执行 CRUD 操作

本教程介绍如何通过示例集成连接到 MySQL 数据库实例,并对 MySQL 数据库表执行列出、获取、创建、更新和删除操作。

如需完成本教程,请执行以下任务:

准备工作

  • 确保您有权访问集成。
  • 在 Google Cloud 项目中执行以下操作:

    • 将以下角色授予您要用于创建连接的服务账号:
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor
    • 启用以下服务:
      • secretmanager.googleapis.com (Secret Manager API)
      • connectors.googleapis.com (Connectors API)

      如果之前没有为您的项目启用这些服务,则在“创建连接”页面中创建连接时系统会提示您启用。

  • 确保您有权访问可用于创建数据库的 MySQL 服务器。

在 MySQL 服务器中设置数据库和表

连接到 MySQL 服务器,并创建要在本教程中使用的数据库和表。
  1. 如需连接到 MySQL 服务器,请从已安装 MySQL 客户端的系统执行以下命令:
    mysql --host=MySQL server host name or IP address --port=MySQL server port number -uusername -ppassword
    在此示例中,请执行以下替换操作:
    • MySQL server host name or IP address 替换为 MySQL 服务器的名称或 IP 地址。
    • MySQL server port number 替换为 MySQL 服务器的端口号。
    • username 替换为 MySQL 服务器的用户名。
    • password 替换为 MySQL 服务器的密码。
  2. 如需创建本教程中使用的 MySQL 数据库,请从 MySQL 客户端执行以下命令:
    CREATE DATABASE tutorialDB;
  3. 如需创建本教程中使用的表,请从 MySQL 客户端执行以下命令:
    create table employee
      (
      employee_id int auto_increment primary key,
      employee_first_name varchar(500) NOT null,
      employee_last_name varchar(500) NOT null,
      employee_emailID varchar(500)
      ); 
  4. 如需向您创建的 employee 表添加行,请从 MySQL 客户端执行以下命令:
    INSERT INTO employee (employee_first_name,employee_last_name,employee_emailID) values ("Peter","Dilliard","test-01@test.com");
    INSERT INTO employee (employee_first_name,employee_last_name,employee_emailID) values ("Meaghan","Webb","test-02@test.com");
    
  5. 通过执行以下命令,验证表是否已创建以及是否已添加行:
    SELECT * FROM employee;
    系统会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
    

创建 MySQL 连接

若要使集成能够连接到 MySQL 数据库,请创建与 MySQL 数据库的新连接:

  1. 点击 + 新建以打开创建连接页面。
  2. 位置部分中,选择连接的位置。
    1. 区域列表中,选择要在其中创建连接的区域。

      如需查看所有受支持区域的列表,请参阅位置

    2. 点击下一步
  3. 连接详情部分中,输入以下详细信息:
    1. 连接器列表中,选择 MySQL(预览版)
    2. 连接器版本列表中,选择连接器版本。
    3. 连接名称字段中,输入连接实例的名称。

      连接名称必须符合以下条件:

      • 请使用字母、数字或连字符。
      • 字母必须小写。
      • 名称必须以字母开头,以字母或数字结尾。
      • 名称不能超过 63 个字符。
    4. 可选:在说明字段中,添加连接实例的说明。
    5. 可选:启用 Cloud Logging
    6. 服务账号列表中,选择具有所需角色的服务账号。
    7. 数据库名称字段中,输入 MySQL 数据库的名称。
    8. (可选)配置连接节点设置

      • 节点数下限:输入连接节点数下限。
      • 节点数上限:输入连接节点数上限。

      节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。

    9. 使用代理:选中此复选框可为连接配置代理服务器并配置以下值:
      • 代理身份验证方案:选择要通过代理服务器进行身份验证的身份验证类型。支持以下身份验证类型:
        • 基本:基本 HTTP 身份验证。
        • 摘要:摘要 HTTP 身份验证。
      • 代理用户:用于向代理服务器进行身份验证的用户名。
      • 代理密码:用户密码的 Secret Manager 密文。
      • 代理 SSL 类型:连接到代理服务器时使用的 SSL 类型。支持以下身份验证类型:
        • 自动:默认设置。如果网址是 HTTPS 网址,则使用“隧道”选项。如果网址是 HTTP 网址,则使用“永不”选项。
        • 始终:连接始终启用 SSL。
        • 永不:连接未启用 SSL。
        • 隧道:连接通过隧道代理建立。代理服务器会打开与远程主机的连接,并且流量会流经该代理。
      • 代理服务器部分中,输入代理服务器的详细信息。
        1. 点击+ 添加目标
        2. 选择目标类型
          • 主机地址:指定目标的主机名或 IP 地址。

            如果要与后端系统建立专用连接,请执行以下操作:

    10. 可选:如需向连接添加标签,请点击 + 添加标签
    11. 点击下一步
    12. 目标部分中,输入要连接的远程主机(后端系统)的详细信息。
      • 目标类型列表中,选择一个主机地址。
        1. 主机地址字段中,指定目标的主机名或 IP 地址。
          1. 如果要与后端系统建立专用连接,请按以下步骤操作:
            1. 创建 PSC 服务连接
            2. 创建端点连接然后在主机地址字段中输入端点连接的详细信息。
          2. 如果要与后端系统建立公共连接以提高安全性,您可以考虑为连接配置静态出站 IP 地址,然后将防火墙规则配置为仅将特定静态 IP 地址列入许可名单。

        若要输入其他目标,请点击 + 添加目标

      • 点击下一步
    13. 身份验证部分中,您可以提供凭据:
      • 用户名字段中,输入用于连接的 MySQL 用户名。
      • 密码字段中,输入包含与 MySQL 用户名关联的密码的 Secret Manager 密文。
        • 如果您之前创建过密文,但列表中不提供该密文,请选择手动输入密文。在按资源 ID 添加密文对话框中,从 Secret Manager 复制并粘贴资源 ID。
          • 如需使用最新版本,请以 "projects/project-number/secrets/secret-name" 格式复制并粘贴父级密钥的资源 ID
          • 如需选择特定版本,请以 "projects/project-number/secrets/secret-name/versions/1" 格式复制并粘贴特定版本的资源 ID

          如需添加密文,请点击添加密文

        • 如果您尚未创建用于 MySQL 的密文,请点击创建新密文。在创建密文对话框中,输入以下详细信息:
          • 名称字段中,输入密文名称。
          • 密文值字段中,输入密文的内容或上传包含相应密文的文件。
          • 点击创建密文
      • 密文版本列表中,从可用版本的下拉列表中选择密码密文的版本。
      • 点击下一步
  4. 查看部分中,查看您的连接和身份验证详细信息。
  5. 点击创建

配置身份验证

根据您要使用的身份验证输入详细信息。

  • 用户名和密码
    • 用户名:用于连接的 MySQL 用户名。
    • 密码:包含与 MySQL 用户名关联的密码的 Secret Manager 密文。

配置集成以使用 MySQL 连接

如需使用您在集成中创建的 MySQL 连接,请在集成中添加连接器任务以及 API 触发器API 触发器使用 Edge 连接来连接到连接器任务。

创建新的集成

  1. 在 Google Cloud 控制台中,前往集成连接器页面。

    转到“集成连接器”

  2. 在导航菜单中,点击 Integrations(集成)。

    随即会出现集成列表页面。

  3. 选择现有集成,或点击创建集成以创建新的集成。

    系统会在集成编辑器页面中打开集成。

  4. 在集成编辑器中,依次点击 +添加任务/触发器 > Tasks,查看可用任务的列表。
  5. 点击新建
  6. 创建集成对话框中输入名称和(可选)说明。
  7. 点击创建以打开集成编辑器。

添加和配置 API 触发器

如需向集成添加和配置 API 触发器,请执行以下操作:

  1. 在集成设计器中,选择添加任务/触发器 > 触发器以显示可用触发器列表。
  2. API 触发器元素拖动至集成编辑器。

添加和配置连接器任务

执行以下步骤以配置连接器任务,以列出 employee 表中的所有实体:

  1. 在集成设计器中选择添加任务/触发器 > 任务以显示可用任务列表。
  2. 连接器元素拖动至集成编辑器。
  3. 点击设计器上的连接器任务元素,以查看任务配置窗格。
  4. 点击配置任务

    此时将显示配置连接器任务对话框。

  5. 配置连接器任务对话框中,执行以下操作:
    1. 选择您在其中创建了 MySQL 连接的连接区域。
    2. 选择区域后,将显示连接列。从可用连接列表中选择您创建的 MySQL 连接。
    3. 选择连接后,系统会显示类型列。选择实体,然后从可用实体列表中选择员工
    4. 选择类型后,系统将显示操作列。选择 List
    5. 点击完成以完成连接配置并关闭对话框。

将 API 触发器元素连接到连接器任务元素

接下来,添加一个边缘连接,以将 API 触发器连接到连接器任务。边缘连接是集成中的任何两个元素之间的连接。如需详细了解边缘和边缘条件,请参阅边缘

如需添加边缘连接,请点击 API 触发器元素底部的创建分支控制点。在连接器任务元素顶部的联接控制点处拖放边缘连接。

测试集成

如需测试集成,请执行以下操作:

  1. 点击集成编辑器工具栏中的 Test 按钮。
  2. 根据需要更改执行期限(分钟)值,然后点击测试集成
  3. 集成成功完成后,测试集成对话框将显示消息集成执行成功。如需查看日志,请点击查看日志
  4. 响应参数中的连接器输出载荷下,将显示以下输出:
    [ {
        "employee_id": 1.0,
        "employee_first_name": "Peter",
        "employee_last_name": "Dilliard",
        "employee_emailID": "test-01@test.com"
      },
      {
        "employee_id": 2.0,
        "employee_first_name": "Meaghan",
        "employee_last_name": "Webb",
        "employee_emailID": "test-02@test.com"
      } ]

对 MySQL 数据库表执行其他操作

在集成中配置连接器任务时,您可以选择以下任何一种操作:

  • 定价
  • 获取
  • 创建
  • 更新
  • 删除

您已使用 List 操作查看 employee 表中的所有行。在本教程的以下几个部分中,您将使用 Get、Create、Update 和 Delete 操作向 employee 表中添加、修改或移除行。

从表中获取行

如果您知道要提取的行的实体 ID(或主键),请将该值作为输入提供给集成中的 Get 操作。Get 操作返回的详细信息与 List 操作返回的详细信息类似。但是,List 操作会提取与指定查询匹配的所有表行的详细信息,而 Get 操作仅提取与指定实体 ID 匹配的表行的详细信息。

请记住,尽管 List 操作默认返回表中的所有行,但 Get 操作需要实体 ID 作为搜索参数。因此,要使用 Get 操作,您必须知道要提取的行的实体 ID,或提供实体 ID 的默认值。

如需获取指定行的详细信息,请执行以下步骤以配置您之前创建的连接器任务:

  1. 点击设计器上的连接器任务元素,以查看任务配置窗格。
  2. 点击配置任务

    此时将显示配置连接器任务对话框。

  3. 配置连接器任务对话框的操作列中,选择 Get,然后点击完成
  4. 在任务配置窗格的任务输入下,点击实体 ID
  5. 配置变量对话框中,选择用作集成的输入,然后点击保存
  6. 点击集成编辑器工具栏中的 Test 按钮。
  7. 如果需要,更改执行截止时间(分钟)值。
  8. 输入要提取详细信息的实体的实体 ID。请输入 2
  9. 点击测试集成
  10. 集成成功完成后,测试集成对话框将显示消息集成执行成功。如需查看日志,请点击查看日志
  11. 响应参数中的连接器输出载荷下,将显示以下输出:
    [ {
        "employee_id": 2.0,
        "employee_first_name": "Meaghan",
        "employee_last_name": "Webb",
        "employee_emailID": "test-02@test.com"
      } ]
  12. 您可以验证此处显示的信息是否与 MySQL 表中相应行的信息匹配。如需在 MySQL 表中查看此信息,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee WHERE employee_id=2;
    系统会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
        

向表添加行

借助 Create 操作,您可以在表中添加一行。使用 Create 操作时,您必须在连接器输入载荷中提供实体的所有值。

如需使用 Create 操作添加行,请执行以下步骤来配置您之前创建的连接器任务:

  1. 点击设计器上的连接器任务元素,以查看任务配置窗格。
  2. 点击配置任务

    此时将显示配置连接器任务对话框。

  3. 配置连接器任务对话框的操作列中,选择 Create,然后点击完成
  4. 在任务配置窗格的任务输入下,点击连接器输入载荷
  5. 配置变量对话框中,选择用作集成的输入,然后点击保存
  6. 点击集成编辑器工具栏中的 Test 按钮。
  7. 如果需要,更改执行截止时间(分钟)值。
  8. 输入要创建的实体的详细信息。例如,如需在 employee 表中添加新员工,请输入以下 JSON:
    {
      "employee_first_name": "Mary",
      "employee_last_name": "Smith",
      "employee_emailID": "test-03@test.com"
    }
  9. 点击测试集成
  10. 集成成功完成后,测试集成对话框将显示消息集成执行成功。如需查看日志,请点击查看日志
  11. 响应参数中的连接器输入载荷下,显示您提供的载荷。
    {
      "employee_first_name": "Mary",
      "employee_last_name": "Smith",
      "employee_emailID": "test-03@test.com"
    }
    连接器输出载荷下,实体 ID 显示为输出:
    {
      "employee_id": 3.0
    }
  12. 您可以验证 MySQL 表中是否已添加该行。如需在 MySQL 表中查看此信息,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee;
    系统会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    |           3 | Mary                | Smith              | test-03@test.com |
    +-------------+---------------------+--------------------+------------------+
        

更新表中的行

使用 Update 操作可更改表中的行值。例如,您可以使用此操作来更新 employee 表中员工的电子邮件 ID。如需指定要更新的实体,您可以像在 Get 操作中一样提供实体 ID。或者,您可以使用过滤条件子句参数来传递用于过滤表行的值。如果您要根据特定搜索条件在多个行中进行相同的更改,这将非常有用。

如需更新表行,请执行以下步骤以配置先前创建的连接器任务:

  1. 点击设计器上的连接器任务元素,以查看任务配置窗格。
  2. 点击配置任务

    此时将显示配置连接器任务对话框。

  3. 配置连接器任务对话框的操作列中,选择 Update,然后点击完成
  4. 在任务配置窗格的任务输入下,点击连接器输入载荷
  5. 配置变量对话框中,选择用作集成的输入,然后点击保存
  6. 接下来,在任务配置窗格的任务输入下,点击过滤条件子句
  7. 配置变量对话框中,选择用作集成的输入,然后点击保存
  8. 点击集成编辑器工具栏中的 Test 按钮。
  9. 如果需要,更改执行截止时间(分钟)值。
  10. 输入据以过滤的条件。例如,如需查找电子邮件 ID 为 test-03@test.com 的员工,请输入:
    employee_emailID="test-03@test.com"
  11. 输入要更新的值。例如,如需更新 employee 表中当前电子邮件 ID 与过滤条件子句 test-03@test.com 匹配的所有员工的电子邮件 ID,请输入以下 JSON:
    {
      "employee_emailID": "msmith@test.com"
    }
  12. 点击测试集成
  13. 集成成功完成后,测试集成对话框将显示消息集成执行成功。如需验证实体是否已更新,请使用 Get 操作获取指定实体的详细信息。
  14. 您可以验证 MySQL 表中的行是否已更新。如需在 MySQL 表中查看此信息,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee;
    系统会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    |           3 | Mary                | Smith              | msmith@test.com  |
    +-------------+---------------------+--------------------+------------------+
          

删除表中的行

您可以使用 Delete 操作删除一个或多个表行。提供实体 ID 或使用过滤条件子句指定要删除的行。请注意,如果您使用过滤条件子句指定要删除的行的条件,可以删除与给定过滤条件匹配的多行。如果只想删除某个特定行,请使用实体 ID。

如需使用实体 ID 删除表行,请执行以下步骤以配置之前创建的连接器任务:

  1. 点击设计器上的连接器任务元素,以查看任务配置窗格。
  2. 点击配置任务

    此时将显示配置连接器任务对话框。

  3. 配置连接器任务对话框的操作列中,选择 Delete,然后点击完成
  4. 在任务配置窗格的任务输入下,点击实体 ID
  5. 配置变量对话框中,选择用作集成的输入,然后点击保存
  6. 点击集成编辑器工具栏中的 Test 按钮。
  7. 如果需要,更改执行截止时间(分钟)值。
  8. 输入要删除的表行的实体 ID。请输入 3
  9. 点击测试集成
  10. 集成成功完成后,测试集成对话框将显示消息集成执行成功。如需验证表行是否已删除,请使用 Get 操作获取删除的行的详细信息。此操作会返回指定实体 ID 的错误。

    您还可以使用 List 操作,并视情况为删除的表行提供过滤条件子句。这将返回剩余的行列表,这可能是空列表。

    例如,如果您删除了实体 ID 为 3 的表行,然后为 List 操作指定了过滤条件子句 employee_emailID="msmith@test.com" 或实体 ID 3,日志中的响应参数会显示 []

  11. 您可以验证 MySQL 表中的行是否已删除。如需在 MySQL 表中验证这一点,请从 MySQL 客户端执行以下命令:
    SELECT * FROM employee;
    系统会显示以下表行:
    +-------------+---------------------+--------------------+------------------+
    | employee_id | employee_first_name | employee_last_name | employee_emailID |
    +-------------+---------------------+--------------------+------------------+
    |           1 | Peter               | Dilliard           | test-01@test.com |
    |           2 | Meaghan             | Webb               | test-02@test.com |
    +-------------+---------------------+--------------------+------------------+
            

后续步骤