对 MySQL 数据库执行 CRUD 操作
本教程介绍如何从示例集成连接到 MySQL 数据库实例,以及如何对 MySQL 数据库表执行 List、Get、Create、Update 和 Delete 操作。
如需完成本教程,请执行以下任务:
准备工作
- 确保您有权访问集成。
-
在 Google Cloud 项目中执行以下操作:
- 将以下角色授予您要用于创建连接的服务账号:
roles/secretmanager.viewer
roles/secretmanager.secretAccessor
- 启用以下服务:
secretmanager.googleapis.com
(Secret Manager API)connectors.googleapis.com
(Connectors API)
如果之前没有为您的项目启用这些服务,则在“创建连接”页面中创建连接时系统会提示您启用。
- 将以下角色授予您要用于创建连接的服务账号:
- 确保您有权访问可用于创建数据库的 MySQL 服务器。
在 MySQL 服务器中设置数据库和表
连接到 MySQL 服务器,并创建要在本教程中使用的数据库和表。-
如需连接到 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 服务器的密码。
-
将
-
如需创建本教程中使用的 MySQL 数据库,请从 MySQL 客户端执行以下命令:
CREATE DATABASE tutorialDB;
-
如需创建本教程中使用的表,请从 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) );
-
如需将行添加到您创建的
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");
- 通过执行以下命令,验证表是否已创建以及是否已添加行:
系统会显示以下表行: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 数据库的新连接:
- 点击 + 新建以打开创建连接页面。
- 在位置部分中,选择连接的位置。
- 从区域列表中,选择要在其中创建连接的区域。
如需查看所有受支持区域的列表,请参阅位置。
- 点击下一步。
- 从区域列表中,选择要在其中创建连接的区域。
- 在连接详情部分中,输入以下详细信息:
- 从连接器列表中,选择 MySQL(预览版)。
- 从连接器版本列表中,选择连接器版本。
- 在连接名称字段中,输入连接实例的名称。
连接名称必须符合以下条件:
- 请使用字母、数字或连字符。
- 字母必须小写。
- 名称必须以字母开头,以字母或数字结尾。
- 名称不能超过 49 个字符。
- 可选:在说明字段中,添加连接实例的说明。
- 可选:启用 Cloud Logging。
- 从服务账号列表中,选择具有所需角色的服务账号。
- 在数据库名称字段中,输入 MySQL 数据库的名称。
- (可选)配置连接节点设置:
- 节点数下限:输入连接节点数下限。
- 节点数上限:输入连接节点数上限。
节点是处理事务的连接单元(或副本)。 连接处理越多事务就需要越多节点,相反,处理越少事务需要越少节点。 如需了解节点如何影响连接器价格,请参阅连接节点的价格。如果未输入任何值,则默认情况下,节点数下限设置为 2(以便提高可用性),节点数上限设置为 50。
- 使用代理:选中此复选框可为连接配置代理服务器并配置以下值:
-
代理身份验证方案:选择要通过代理服务器进行身份验证的身份验证类型。支持以下身份验证类型:
- 基本:基本 HTTP 身份验证。
- 摘要:摘要 HTTP 身份验证。
- 代理用户:用于向代理服务器进行身份验证的用户名。
- 代理密码:用户密码的 Secret Manager 密文。
-
代理 SSL 类型:连接到代理服务器时使用的 SSL 类型。支持以下身份验证类型:
- 自动:默认设置。如果网址是 HTTPS 网址,则使用“隧道”选项。如果网址是 HTTP 网址,则使用“永不”选项。
- 始终:连接始终启用 SSL。
- 永不:连接未启用 SSL。
- 隧道:连接通过隧道代理建立。代理服务器会打开与远程主机的连接,并且流量会流经该代理。
- 在代理服务器部分中,输入代理服务器的详细信息。
- 可选:如需向连接添加标签,请点击 + 添加标签。
- 点击下一步。
- 在目标部分中,输入要连接的远程主机(后端系统)的详细信息。
- 从目标类型列表中,选择一个主机地址。
- 从列表中选择主机地址,以指定目标的主机名或 IP 地址。
- 如果要与后端系统建立专用连接,请从列表中选择端点连接,然后从端点连接列表中选择所需的端点连接。
如果要与后端系统建立公共连接以提高安全性,您可以考虑为连接配置静态出站 IP 地址,然后将防火墙规则配置为仅将特定静态 IP 地址列入许可名单。
若要输入其他目标,请点击 + 添加目标。
- 点击下一步。
- 从目标类型列表中,选择一个主机地址。
- 在身份验证部分中,您可以提供凭据:
- 在用户名字段中,输入用于连接的 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 的密文,请点击创建新密文。在创建密文对话框中,输入以下详细信息:
- 在名称字段中,输入密文名称。
- 在密文值字段中,输入密文的内容或上传包含相应密文的文件。
- 点击创建密文。
- 如果您之前创建过密文,但列表中不提供该密文,请选择手动输入密文。在按资源 ID 添加密文对话框中,从 Secret Manager 复制并粘贴资源 ID。
- 在密文版本列表中,从可用版本的下拉列表中选择密码密文的版本。
- 点击下一步。
- 在查看部分中,查看您的连接和身份验证详细信息。
- 点击创建。
配置身份验证
根据您要使用的身份验证输入详细信息。
-
用户名和密码
- 用户名:用于连接的 MySQL 用户名。
- 密码:包含与 MySQL 用户名关联的密码的 Secret Manager 密文。
配置集成以使用 MySQL 连接
如需使用在集成中创建的 MySQL 连接,请在集成中添加连接器任务以及 API 触发器。API 触发器使用 Edge 连接来连接到连接器任务。
创建新的集成
- 在 Google Cloud 控制台中,转到集成连接器页面。
- 在导航菜单中,点击集成。
随即会出现集成列表页面。
- 选择现有集成,或点击创建集成以创建新的集成。
系统随即会在集成编辑器页面中打开集成。
- 在集成编辑器中,点击 + 添加任务/触发器 > 任务以查看可用任务的列表。
- 点击新建。
- 在创建集成对话框中输入名称和(可选)说明。
- 点击创建以打开集成编辑器。
添加和配置 API 触发器
如需向集成添加和配置 API 触发器,请执行以下操作:
- 在集成设计器中,选择添加任务/触发器 > 触发器以显示可用触发器列表。
- 将 API 触发器元素拖动至集成编辑器。
添加和配置连接器任务
执行以下步骤以配置连接器任务,以列出 employee
表中的所有实体:
- 在集成设计器中选择添加任务/触发器 > 任务以显示可用任务列表。
- 将连接器元素拖动至集成编辑器。
- 点击设计器上的连接器任务元素,以查看任务配置窗格。
- 点击配置任务。
此时将显示配置连接器任务对话框。
- 在配置连接器任务对话框中,执行以下操作:
- 选择您在其中创建了 MySQL 连接的连接区域。
- 选择区域后,将显示连接列。从可用连接列表中选择您创建的 MySQL 连接。
- 选择连接后,系统会显示类型列。选择实体,然后从可用实体列表中选择员工。
- 选择类型后,系统将显示操作列。选择 List。
- 点击完成以完成连接配置并关闭对话框。
将 API 触发器元素连接到连接器任务元素
接下来,添加一个边缘连接,以将 API 触发器连接到连接器任务。边缘连接是集成中的任何两个元素之间的连接。如需详细了解边缘和边缘条件,请参阅边缘。
如需添加边缘连接,请点击 API 触发器元素底部的创建分支控制点。在连接器任务元素顶部的联接控制点处拖放边缘连接。
测试集成
如需测试集成,请执行以下操作:
- 点击集成编辑器工具栏中的测试按钮。
- 根据需要更改执行期限(分钟)值,然后点击测试集成。
- 集成成功完成后,测试集成窗格将显示消息集成执行成功。如需查看日志,请点击查看日志。
- 在响应参数中的连接器输出载荷下,将显示以下输出:
[ { "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 的默认值。
如需获取指定行的详细信息,请执行以下步骤以配置您之前创建的连接器任务:
- 点击设计器上的连接器任务元素,以查看任务配置窗格。
- 点击配置任务。
此时将显示配置连接器任务对话框。
- 在配置连接器任务对话框的操作列中,选择 Get,然后点击完成。
- 在任务配置窗格的任务输入下,点击实体 ID。
- 在配置变量对话框中,选择用作集成的输入,然后点击保存。
- 点击集成编辑器工具栏中的测试按钮。
- 如果需要,更改执行截止时间(分钟)值。
- 输入要提取详细信息的实体的实体 ID。请输入 2。
- 点击测试集成。
- 集成成功完成后,Test Integration 窗格会显示消息 Integration execution complete(集成执行成功)。如需查看日志,请点击查看日志。
- 在响应参数中的连接器输出载荷下,将显示以下输出:
[ { "employee_id": 2.0, "employee_first_name": "Meaghan", "employee_last_name": "Webb", "employee_emailID": "test-02@test.com" } ]
- 您可以验证此处显示的信息是否与 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 操作添加行,请执行以下步骤来配置您之前创建的连接器任务:
- 点击设计器上的连接器任务元素,以查看任务配置窗格。
- 点击配置任务。
此时将显示配置连接器任务对话框。
- 在配置连接器任务对话框的操作列中,选择 Create,然后点击完成。
- 在任务配置窗格的任务输入下,点击连接器输入载荷。
- 在配置变量对话框中,选择用作集成的输入,然后点击保存。
- 点击集成编辑器工具栏中的测试按钮。
- 如果需要,更改执行截止时间(分钟)值。
- 输入要创建的实体的详细信息。例如,如需在
employee
表中添加新员工,请输入以下 JSON:{ "employee_first_name": "Mary", "employee_last_name": "Smith", "employee_emailID": "test-03@test.com" }
- 点击测试集成。
- 集成成功完成后,Test Integration 窗格会显示消息 Integration execution complete(集成执行成功)。如需查看日志,请点击查看日志。
- 在响应参数中的连接器输入载荷下,显示您提供的载荷。
在连接器输出载荷下,实体 ID 显示为输出:{ "employee_first_name": "Mary", "employee_last_name": "Smith", "employee_emailID": "test-03@test.com" }
{ "employee_id": 3.0 }
-
您可以验证 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。或者,您可以使用过滤条件子句参数来传递用于过滤表行的值。如果您要根据特定搜索条件在多个行中进行相同的更改,这将非常有用。
如需更新表行,请执行以下步骤以配置先前创建的连接器任务:
- 点击设计器上的连接器任务元素,以查看任务配置窗格。
- 点击配置任务。
此时将显示配置连接器任务对话框。
- 在配置连接器任务对话框的操作列中,选择 Update,然后点击完成。
- 在任务配置窗格的任务输入下,点击连接器输入载荷。
- 在配置变量对话框中,选择用作集成的输入,然后点击保存。
- 接下来,在任务配置窗格的任务输入下,点击过滤条件子句。
- 在配置变量对话框中,选择用作集成的输入,然后点击保存。
- 点击集成编辑器工具栏中的测试按钮。
- 如果需要,更改执行截止时间(分钟)值。
- 输入据以过滤的条件。例如,如需查找电子邮件 ID 为
test-03@test.com
的员工,请输入:employee_emailID="test-03@test.com"
- 输入要更新的值。例如,如需更新
employee
表中当前电子邮件 ID 与过滤条件子句test-03@test.com
匹配的所有员工的电子邮件 ID,请输入以下 JSON:{ "employee_emailID": "msmith@test.com" }
- 点击测试集成。
- 集成成功完成后,Test Integration 窗格会显示消息 Integration execution complete(集成执行成功)。如需验证实体是否已更新,请使用 Get 操作获取指定实体的详细信息。
- 您可以验证 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 删除表行,请执行以下步骤以配置之前创建的连接器任务:
- 点击设计器上的连接器任务元素,以查看任务配置窗格。
- 点击配置任务。
此时将显示配置连接器任务对话框。
- 在配置连接器任务对话框的操作列中,选择 Delete,然后点击完成。
- 在任务配置窗格的任务输入下,点击实体 ID。
- 在配置变量对话框中,选择用作集成的输入,然后点击保存。
- 点击集成编辑器工具栏中的测试按钮。
- 如果需要,更改执行截止时间(分钟)值。
- 输入要删除的表行的实体 ID。请输入 3。
- 点击测试集成。
-
集成成功完成后,Test Integration 窗格会显示消息 Integration execution complete(集成执行成功)。如需验证表行是否已删除,请使用 Get 操作获取删除的行的详细信息。此操作会返回指定实体 ID 的错误。
您还可以使用 List 操作,并视情况为删除的表行提供过滤条件子句。这将返回剩余的行列表,这可能是空列表。
例如,如果您删除了实体 ID 为 3 的表行,然后为 List 操作指定了过滤条件子句
employee_emailID="msmith@test.com"
或实体 ID 3,日志中的响应参数会显示[]
。 -
您可以验证 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 | +-------------+---------------------+--------------------+------------------+