工具:create_user
为 Cloud SQL 实例创建数据库用户。
- 此工具会返回一个长时间运行的操作。使用
get_operation工具轮询其状态,直到操作完成。 - 使用
create_user工具时,请指定用户类型:CLOUD_IAM_USER或CLOUD_IAM_SERVICE_ACCOUNT。 - 默认情况下,新创建的用户会被分配
cloudsqlsuperuser角色,除非您在请求中明确指定其他数据库角色。 - 如果新创建的用户是当前已登录的 IAM 用户,则可以使用
execute_sql工具。execute_sql工具使用通过 IAM 数据库身份验证登录的数据库用户的权限执行 SQL 语句。
create_user 工具具有以下限制:
- 您无法创建带有密码的内置用户。
create_user工具不支持为 SQL Server 创建用户。
如需在 PostgreSQL 中创建 IAM 用户,请执行以下操作:
- 数据库用户名必须是 IAM 用户的电子邮件地址,且必须全部为小写。例如,如需为 PostgreSQL IAM 用户
example-user@example.com创建用户,您可以使用以下请求:
{
"name": "example-user@example.com",
"type": "CLOUD_IAM_USER",
"instance":"test-instance",
"project": "test-project"
}
为 IAM 用户创建的数据库用户名是 example-user@example.com。
如需在 PostgreSQL 中创建 IAM 服务账号,请执行以下操作:
- 即使账号的完整电子邮件地址为
service-account-name@project-id.iam.gserviceaccount.com,也必须创建不带.gserviceaccount.com后缀的数据库用户名。例如,如需为 PostgreSQL 创建 IAM 服务账号,您可以使用以下请求格式:
{
"name": "test@test-project.iam",
"type": "CLOUD_IAM_SERVICE_ACCOUNT",
"instance": "test-instance",
"project": "test-project"
}
为 IAM 服务账号创建的数据库用户名是 test@test-project.iam。
如需在 MySQL 中创建 IAM 用户或 IAM 服务账号,请执行以下操作:
- Cloud SQL for MySQL 存储用户名时,会截断用户或服务账号电子邮件地址中的“@”和域名。例如,
example-user@example.com会变为example-user。 - 因此,您不能将具有相同用户名但不同域名的两个 IAM 用户或服务账号添加到同一 Cloud SQL 实例。
- 例如,如需为 MySQL IAM 用户
example-user@example.com创建用户,请使用以下请求:
{
"name": "example-user@example.com",
"type": "CLOUD_IAM_USER",
"instance": "test-instance",
"project": "test-project"
}
为 IAM 用户创建的数据库用户名是 example-user。
- 例如,如需创建 MySQL IAM 服务账号
service-account-name@project-id.iam.gserviceaccount.com,请使用以下请求:
{
"name": "service-account-name@project-id.iam.gserviceaccount.com",
"type": "CLOUD_IAM_SERVICE_ACCOUNT",
"instance": "test-instance",
"project": "test-project"
}
为 IAM 服务账号创建的数据库用户名是 service-account-name。
以下示例演示了如何使用 curl 调用 create_user MCP 工具。
| Curl 请求 |
|---|
curl --location 'https://sqladmin.googleapis.com/mcp' \ --header 'content-type: application/json' \ --header 'accept: application/json, text/event-stream' \ --data '{ "method": "tools/call", "params": { "name": "create_user", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
输入架构
针对 MCP 的用户插入请求。
SqlUsersInsertMcpRequest
| JSON 表示法 |
|---|
{
"project": string,
"instance": string,
"type": enum ( |
| 字段 | |
|---|---|
project |
必需。实例所属的项目的 ID。 |
instance |
必需。数据库实例 ID。不包括项目 ID。 |
type |
必需。用户类型。它用于确定在登录期间对用户进行身份验证的方法。使用 Cloud IAM 用户进行身份验证时,请使用 CLOUD_IAM_USER 类型。使用 Cloud IAM 服务账号进行身份验证时,请使用 CLOUD_IAM_SERVICE_ACCOUNT 类型。 |
name |
必需。Cloud SQL 实例中用户的名称。 |
databaseRoles[] |
可选。用户的角色成员资格。默认值为 [cloudsqlsuperuser]。 |
输出架构
Operation 资源。对于返回 Operation 资源的成功操作,仅会在资源中填充与操作相关的字段。
操作
| JSON 表示法 |
|---|
{ "kind": string, "targetLink": string, "status": enum ( |
| 字段 | |
|---|---|
kind |
始终为 |
targetLink |
|
status |
操作的状态。 |
user |
启动此操作的用户的电子邮件地址。 |
insertTime |
此操作已加入队列的时间,采用 UTC 时区,采用 RFC 3339 格式,例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
startTime |
此操作真正开始的时间,采用 UTC 时区,采用 RFC 3339 格式,例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
endTime |
此操作完成的时间,采用 UTC 时区,采用 RFC 3339 格式,例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
error |
如果在处理此操作期间发生错误,系统将填充此字段。 |
apiWarning |
Admin API 警告消息。 |
operationType |
操作的类型。有效值为:* |
importContext |
导入操作的上下文(如果适用)。 |
exportContext |
导出操作的上下文(如果适用)。 |
backupContext |
备份操作的上下文(如果适用)。 |
preCheckMajorVersionUpgradeContext |
仅当 operation_type 为 PRE_CHECK_MAJOR_VERSION_UPGRADE 时,系统才会填充此字段。PreCheckMajorVersionUpgradeContext 消息本身包含相应预检查的详细信息,例如升级的目标数据库版本和检查结果(包括发现的任何警告或错误)。 |
name |
唯一标识操作的标识符。您可以使用此标识符检索包含操作相关信息的操作资源。 |
targetId |
运行相应操作的资源的名称。 |
selfLink |
此资源的 URI。 |
targetProject |
与此操作相关的目标实例的项目 ID。 |
acquireSsrsLeaseContext |
获取 SSRS 租约操作的上下文(如果适用)。 |
subOperationType |
可选。基于操作类型的子操作。 |
时间戳
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
表示世界协调时间 (UTC) 的秒数(从 Unix 纪元 1970-01-01T00:00:00Z 开始算起)。必须介于 -62135596800 到 253402300799 之间(含边界值),对应于 0001-01-01T00:00:00Z 到 9999-12-31T23:59:59Z。 |
nanos |
秒数的非负小数部分(以纳秒为单位)。此字段是时长的纳秒部分,而不是秒的替代项。对于含小数部分的负秒数,仍必须包含按时间递升的非负纳秒值。必须在 0 到 999,999,999 之间(含边界值)。 |
OperationErrors
| JSON 表示法 |
|---|
{
"kind": string,
"errors": [
{
object ( |
| 字段 | |
|---|---|
kind |
始终为 |
errors[] |
处理此操作时遇到的错误的列表。 |
OperationError
| JSON 表示法 |
|---|
{ "kind": string, "code": string, "message": string } |
| 字段 | |
|---|---|
kind |
始终为 |
code |
确定发生的具体错误。 |
message |
有关遇到的错误的其他信息。 |
ApiWarning
| JSON 表示法 |
|---|
{
"code": enum ( |
| 字段 | |
|---|---|
code |
用于标识警告类型的唯一代码。 |
message |
警告消息。 |
region |
REGION_UNREACHABLE 警告的区域名称。 |
ImportContext
| JSON 表示法 |
|---|
{ "uri": string, "database": string, "kind": string, "fileType": enum ( |
| 字段 | |
|---|---|
uri |
Cloud Storage 中导入文件的路径,格式为 |
database |
导入的目标数据库。如果 |
kind |
始终为 |
fileType |
指定 URI 的文件类型。`SQL |
csvImportOptions |
用于以 CSV 格式导入数据的选项。 |
importUser |
此导入操作的 PostgreSQL 用户。仅 PostgreSQL 实例。 |
bakImportOptions |
特定于 SQL Server .BAK 文件的导入参数 |
sqlImportOptions |
可选。用于从 SQL 语句导入数据的选项。 |
tdeImportOptions |
可选。特定于 SQL Server TDE 证书的导入参数 |
SqlCsvImportOptions
| JSON 表示法 |
|---|
{ "table": string, "columns": [ string ], "escapeCharacter": string, "quoteCharacter": string, "fieldsTerminatedBy": string, "linesTerminatedBy": string } |
| 字段 | |
|---|---|
table |
将导入 CSV 数据的表格。 |
columns[] |
将导入 CSV 数据的列。如果未指定,则数据库表的所有列都将加载 CSV 数据。 |
escapeCharacter |
指定应出现在需要转义的数据字符之前的字符。 |
quoteCharacter |
指定在引用数据值时要使用的引用字符。 |
fieldsTerminatedBy |
指定用于在文件的每行中分隔列的字符。 |
linesTerminatedBy |
用于分隔行。如果某行不包含所有字段,则其余列会设置为默认值。 |
SqlBakImportOptions
| JSON 表示法 |
|---|
{ "encryptionOptions": { object ( |
| 字段 | |
|---|---|
encryptionOptions |
|
striped |
正在恢复的备份集是否为条带化备份集。仅适用于 Cloud SQL for SQL Server。 |
noRecovery |
备份导入是否会使用 NORECOVERY 选项恢复数据库。仅适用于 Cloud SQL for SQL Server。 |
recoveryOnly |
备份导入请求是否只会使数据库联机,而不会下载 Bak 内容。只能将“no_recovery”和“recovery_only”中的一个设置为 true,否则将返回错误。仅适用于 Cloud SQL for SQL Server。 |
bakType |
bak 内容的类型,FULL 或 DIFF |
stopAt |
可选。导入应停止的时间戳。此时间戳采用 RFC 3339 格式(例如, 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
stopAtMark |
可选。导入应停止的标记交易。此字段等同于 STOPATMARK 关键字,仅适用于 Cloud SQL for SQL Server。 |
EncryptionOptions
| JSON 表示法 |
|---|
{ "certPath": string, "pvkPath": string, "pvkPassword": string, "keepEncrypted": boolean } |
| 字段 | |
|---|---|
certPath |
Cloud Storage 中证书 (.cer) 的路径,格式为 |
pvkPath |
Cloud Storage 中证书私钥 (.pvk) 的路径,格式为 |
pvkPassword |
加密私钥的密码 |
keepEncrypted |
可选。导入的文件是否保持加密状态。 |
BoolValue
| JSON 表示法 |
|---|
{ "value": boolean } |
| 字段 | |
|---|---|
value |
布尔值。 |
SqlImportOptions
| JSON 表示法 |
|---|
{
"threads": integer,
"parallel": boolean,
"postgresImportOptions": {
object ( |
| 字段 | |
|---|---|
threads |
可选。用于并行导入的线程数。 |
parallel |
可选。导入是否应并行进行。 |
postgresImportOptions |
可选。用于从 Cloud SQL for PostgreSQL 实例导入数据的选项。 |
Int32Value
| JSON 表示法 |
|---|
{ "value": integer } |
| 字段 | |
|---|---|
value |
int32 值。 |
PostgresImportOptions
| JSON 表示法 |
|---|
{ "clean": boolean, "ifExists": boolean } |
| 字段 | |
|---|---|
clean |
可选。pg_restore 实用程序的 --clean 标志。此标志仅在您启用 Cloud SQL 并行导入文件时适用。 |
ifExists |
可选。pg_restore 实用程序的 --if-exists 标志。此标志仅在您启用 Cloud SQL 并行导入文件时适用。 |
SqlTdeImportOptions
| JSON 表示法 |
|---|
{ "certificatePath": string, "privateKeyPath": string, "privateKeyPassword": string, "name": string } |
| 字段 | |
|---|---|
certificatePath |
必需。TDE 证书公钥的路径,格式为 gs://bucketName/fileName。实例必须拥有文件的读取权限。仅适用于 SQL Server 实例。 |
privateKeyPath |
必需。TDE 证书私钥的路径,格式为 gs://bucketName/fileName。实例必须拥有文件的读取权限。仅适用于 SQL Server 实例。 |
privateKeyPassword |
必需。加密私钥的密码。 |
name |
必需。证书名称。仅适用于 SQL Server 实例。 |
ExportContext
| JSON 表示法 |
|---|
{ "uri": string, "databases": [ string ], "kind": string, "sqlExportOptions": { object ( |
| 字段 | |
|---|---|
uri |
Google Cloud Storage 中将存储导出的文件的路径。URI 的格式为 |
databases[] |
要导出的数据库。 |
kind |
始终为 |
sqlExportOptions |
用于将数据导出为 SQL 语句的选项。 |
csvExportOptions |
用于将数据导出为 CSV 的选项。仅限 |
fileType |
指定 URI 的文件类型。 |
offload |
是否执行无服务器导出。 |
bakExportOptions |
用于将数据导出为 BAK 文件的选项。 |
tdeExportOptions |
可选。特定于 SQL Server TDE 证书的导出参数 |
SqlExportOptions
| JSON 表示法 |
|---|
{ "tables": [ string ], "schemaOnly": boolean, "mysqlExportOptions": { object ( |
| 字段 | |
|---|---|
tables[] |
要从指定数据库导出或已导出的表。如果指定表,请指定一个且仅指定一个数据库。对于 PostgreSQL 实例,您只能指定一个表。 |
schemaOnly |
仅导出架构。 |
mysqlExportOptions |
|
threads |
可选。用于并行导出的线程数。 |
parallel |
可选。导出是否应并行进行。 |
postgresExportOptions |
可选。从 Cloud SQL for PostgreSQL 实例导出数据的选项。 |
MysqlExportOptions
| JSON 表示法 |
|---|
{ "masterData": integer } |
| 字段 | |
|---|---|
masterData |
包含设置复制所需的 SQL 语句的选项。如果设置为 |
PostgresExportOptions
| JSON 表示法 |
|---|
{ "clean": boolean, "ifExists": boolean } |
| 字段 | |
|---|---|
clean |
可选。使用此选项可包含 DROP
SQL 语句。在运行导入操作之前,请使用以下语句删除数据库对象。 |
ifExists |
可选。用于在 clean 生成的每个 DROP 语句中添加 IF EXISTS SQL 语句的选项。 |
SqlCsvExportOptions
| JSON 表示法 |
|---|
{ "selectQuery": string, "escapeCharacter": string, "quoteCharacter": string, "fieldsTerminatedBy": string, "linesTerminatedBy": string } |
| 字段 | |
|---|---|
selectQuery |
用于提取数据的 select 查询。 |
escapeCharacter |
指定应出现在需要转义的数据字符之前的字符。 |
quoteCharacter |
指定在引用数据值时要使用的引用字符。 |
fieldsTerminatedBy |
指定用于在文件的每行中分隔列的字符。 |
linesTerminatedBy |
用于分隔行。如果某行不包含所有字段,则其余列会设置为默认值。 |
SqlBakExportOptions
| JSON 表示法 |
|---|
{
"striped": boolean,
"stripeCount": integer,
"bakType": enum ( |
| 字段 | |
|---|---|
striped |
导出是否应条带化。 |
stripeCount |
用于指定导出时要使用的条带数量的选项。如果留空,且条带化字段的值为 true,则系统会自动选择条带数。 |
bakType |
相应 BAK 文件的类型,可以是 export、FULL 或 DIFF,仅限 SQL Server |
copyOnly |
已弃用:copy_only 已弃用。请改用 differential_base |
differentialBase |
备份是否可用作差分库 copy_only 备份不能用作差分库 |
exportLogStartTime |
可选。导出操作中将包含交易日志的开始时间戳。采用 RFC 3339 格式(例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
exportLogEndTime |
可选。导出操作中将包含交易日志的结束时间戳。采用 RFC 3339 格式(例如 采用 RFC 3339 标准,生成的输出将始终进行 Z 规范化(即转换为 UTC 零时区格式并在末尾附加 Z),并使用 0、3、6 或 9 个小数位。不带“Z”的偏差时间也是可以接受的。示例: |
SqlTdeExportOptions
| JSON 表示法 |
|---|
{ "certificatePath": string, "privateKeyPath": string, "privateKeyPassword": string, "name": string } |
| 字段 | |
|---|---|
certificatePath |
必需。TDE 证书公钥的路径,格式为 gs://bucketName/fileName。实例必须拥有存储桶的写入权限。仅适用于 SQL Server 实例。 |
privateKeyPath |
必需。TDE 证书私钥的路径,格式为 gs://bucketName/fileName。实例必须对该位置具有写入权限。仅适用于 SQL Server 实例。 |
privateKeyPassword |
必需。加密私钥的密码。 |
name |
必需。证书名称。仅适用于 SQL Server 实例。 |
BackupContext
| JSON 表示法 |
|---|
{ "backupId": string, "kind": string, "name": string } |
| 字段 | |
|---|---|
backupId |
备份的标识符。 |
kind |
始终为 |
name |
备份的名称。格式:projects/{project}/backups/{backup} |
PreCheckMajorVersionUpgradeContext
| JSON 表示法 |
|---|
{ "targetDatabaseVersion": enum ( |
| 字段 | |
|---|---|
targetDatabaseVersion |
必需。要升级到的目标数据库版本。 |
preCheckResponse[] |
仅限输出。预检操作的响应。 |
kind |
可选。始终为 |
PreCheckResponse
| JSON 表示法 |
|---|
{ "actionsRequired": [ string ], // Union field |
| 字段 | |
|---|---|
actionsRequired[] |
用户需要采取的操作。使用 repeated 属性表示多个操作。 |
联合字段
|
|
message |
要向用户显示的消息。 |
联合字段
|
|
messageType |
消息类型,是信息、警告还是错误。 |
AcquireSsrsLeaseContext
| JSON 表示法 |
|---|
{ // Union field |
| 字段 | |
|---|---|
联合字段
|
|
setupLogin |
用作设置登录名以连接到数据库服务器进行 SSRS 设置的用户名。 |
联合字段
|
|
serviceLogin |
在 SSRS 设置期间用作服务登录名以连接到报告数据库的用户名。 |
联合字段
|
|
reportDatabase |
用于 SSRS 设置的报告数据库。 |
联合字段
|
|
duration |
设置 SSRS 所需的租约时长。 该时长以秒为单位,最多包含九个小数位,以“ |
时长
| JSON 表示法 |
|---|
{ "seconds": string, "nanos": integer } |
| 字段 | |
|---|---|
seconds |
时间段的带符号秒数。必须介于 -315,576,000,000 到 +315,576,000,000 之间(含边界值)。注意:这些界限是通过以下计算得出的:60 秒/分钟 * 60 分钟/小时 * 24 小时/天 * 365.25 天/年 * 10000 年 |
nanos |
时间跨度的有符号秒数小数部分(以纳秒为单位)。小于 1 秒的时长用 0 |
SqlSubOperationType
| JSON 表示法 |
|---|
{ // Union field |
| 字段 | |
|---|---|
联合字段 sub_operation_details。与操作类型对应的子操作详细信息。sub_operation_details 只能是下列其中一项: |
|
maintenanceType |
要对实例执行的维护类型。 |
工具注释
破坏性提示:❌ | 等幂性提示:❌ | 只读提示:❌ | 开放世界提示:❌