工具:update_user
更新 Cloud SQL 实例的数据库用户。update_user 的常见用例是向用户授予 cloudsqlsuperuser 角色,该角色可为用户提供许多必需的权限。
此工具仅支持更新用户以分配数据库角色。
- 此工具会返回一个长时间运行的操作。使用
get_operation工具轮询其状态,直到操作完成。 - 在调用
update_user工具之前,请务必先使用list_users工具检查用户的现有配置,例如用户类型。 - 对于 MySQL,如果
list_users工具针对iamEmail字段返回完整的电子邮件地址(例如{name=test-account, iamEmail=test-account@project-id.iam.gserviceaccount.com}),那么在update_user请求中,请在name字段中使用iamEmail字段中的完整电子邮件地址。例如name=test-account@project-id.iam.gserviceaccount.com。
用于更新用户角色的关键参数:
database_roles:要分配给用户的数据库角色列表。revokeExistingRoles:一个布尔值字段(默认值:false),用于控制如何处理现有角色。
角色更新的运作方式:
如果
revokeExistingRoles为 true:- 系统将撤消授予用户但未包含在所提供的
database_roles列表中的所有现有角色。 - 撤消仅适用于非系统角色。系统角色(例如
cloudsqliamuser等)不会被撤消。 - 系统将授予用户尚未拥有的
database_roles列表中的所有角色。 - 如果
database_roles为空,则撤消所有现有的非系统角色。
- 系统将撤消授予用户但未包含在所提供的
如果
revokeExistingRoles为 false(默认值):- 系统将授予用户尚未拥有的
database_roles列表中的所有角色。 - 系统会保留不在
database_roles列表中的现有角色。 - 如果
database_roles为空,则用户的角色不会发生任何变化。
- 系统将授予用户尚未拥有的
示例:
现有角色:
[roleA, roleB]- 请求:
database_roles: [roleB, roleC], revokeExistingRoles: true - 结果:撤消
roleA,授予roleC。用户角色变为[roleB, roleC]。
- 请求:
database_roles: [roleB, roleC], revokeExistingRoles: false - 结果:授予
roleC。用户角色变为[roleA, roleB, roleC]。
- 请求:
database_roles: [], revokeExistingRoles: true - 结果:撤消了
roleA,撤消了roleB。用户角色变为[]。
- 请求:
database_roles: [], revokeExistingRoles: false - 结果:无变化。用户角色保持
[roleA, roleB]。
- 请求:
以下示例演示了如何使用 curl 调用 update_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": "update_user", "arguments": { // provide these details according to the tool's MCP specification } }, "jsonrpc": "2.0", "id": 1 }' |
输入架构
针对 MCP 的用户更新请求。
SqlUsersUpdateMcpRequest
| JSON 表示法 |
|---|
{ "host": string, "instance": string, "name": string, "project": string, "databaseRoles": [ string ], "type": enum ( |
| 字段 | |
|---|---|
host |
可选。实例中用户的主机。 |
instance |
必需。数据库实例 ID。不包括项目 ID。 |
name |
必需。实例中用户的名称。 |
project |
必需。实例所属的项目的 ID。 |
databaseRoles[] |
可选。要向用户授予的数据库角色列表。对于更新请求,系统会忽略 body.database_roles。 |
type |
必需。用户类型。它用于确定在登录期间对用户进行身份验证的方法。默认值为数据库的内置用户类型。 |
联合字段
|
|
revokeExistingRoles |
可选。撤消授予用户的现有角色。 |
输出架构
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 |
要对实例执行的维护类型。 |
工具注释
破坏性提示:❌ | 等幂性提示:❌ | 只读提示:❌ | 开放世界提示:❌