ALTER USER

修改系统中现有用户的属性和对象/会话参数:

  • 管理员可以使用此命令更改管理员具有相应权限的任何用户的属性和参数默认值。

  • 单个用户可以使用此命令更改自己的特定属性和任何会话参数的默认值。有关更多详细信息,请参阅 ` 使用说明 `_ (本主题内容)。

还可用于中止用户提交的所有查询(和其他 SQL 语句)。

另请参阅:

CREATE USERDROP USERSHOW PARAMETERSSHOW USERSDESCRIBE USER

语法

ALTER USER [ IF EXISTS ] [ <name> ] RENAME TO <new_name>

ALTER USER [ IF EXISTS ] [ <name> ] RESET PASSWORD

ALTER USER [ IF EXISTS ] [ <name> ] ABORT ALL QUERIES

ALTER USER [ IF EXISTS ] [ <name> ] ADD DELEGATED AUTHORIZATION OF ROLE <role_name> TO SECURITY INTEGRATION <integration_name>

ALTER USER [ IF EXISTS ] [ <name> ] REMOVE DELEGATED { AUTHORIZATION OF ROLE <role_name> | AUTHORIZATIONS } FROM SECURITY INTEGRATION <integration_name>

ALTER USER [ IF EXISTS ] [ <name> ] SET { AUTHENTICATION | PASSWORD | SESSION } POLICY <policy_name>

ALTER USER [ IF EXISTS ] [ <name> ] UNSET { AUTHENTICATION | PASSWORD | SESSION } POLICY

ALTER USER [ IF EXISTS ] [ <name> ] SET TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ]

ALTER USER [ IF EXISTS ] [ <name> ] UNSET TAG <tag_name> [ , <tag_name> ... ]

ALTER USER [ IF EXISTS ] [ <name> ] SET { [ objectProperties ] [ objectParams ] [ sessionParams ] }

ALTER USER [ IF EXISTS ] [ <name> ] UNSET { <object_property_name> | <object_param_name> | <session_param_name> } [ , ... ]
Copy

其中:

objectProperties ::=
    PASSWORD = '<string>'
    LOGIN_NAME = <string>
    DISPLAY_NAME = <string>
    FIRST_NAME = <string>
    MIDDLE_NAME = <string>
    LAST_NAME = <string>
    EMAIL = <string>
    MUST_CHANGE_PASSWORD = TRUE | FALSE
    DISABLED = TRUE | FALSE
    DAYS_TO_EXPIRY = <integer>
    MINS_TO_UNLOCK = <integer>
    DEFAULT_WAREHOUSE = <string>
    DEFAULT_NAMESPACE = <string>
    DEFAULT_ROLE = <string>
    DEFAULT_SECONDARY_ROLES = ( 'ALL' )
    MINS_TO_BYPASS_MFA = <integer>
    DISABLE_MFA = TRUE | FALSE
    RSA_PUBLIC_KEY = <string>
    RSA_PUBLIC_KEY_FP = <string>
    RSA_PUBLIC_KEY_2 = <string>
    RSA_PUBLIC_KEY_2_FP = <string>
    TYPE = PERSON | SERVICE | LEGACY_SERVICE | NULL
    COMMENT = '<string>'
Copy
objectParams ::=
    ENABLE_PERSONAL_DATABASE = { TRUE | FALSE }
    ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE
    ENABLE_UNREDACTED_SECURE_OBJECT_ERROR = TRUE | FALSE
    NETWORK_POLICY = <string>
    PREVENT_UNLOAD_TO_INLINE_URL = TRUE | FALSE
    PREVENT_UNLOAD_TO_INTERNAL_STAGES = TRUE | FALSE
Copy
sessionParams ::=
    ABORT_DETACHED_QUERY = TRUE | FALSE
    AUTOCOMMIT = TRUE | FALSE
    BINARY_INPUT_FORMAT = <string>
    BINARY_OUTPUT_FORMAT = <string>
    DATE_INPUT_FORMAT = <string>
    DATE_OUTPUT_FORMAT = <string>
    ERROR_ON_NONDETERMINISTIC_MERGE = TRUE | FALSE
    ERROR_ON_NONDETERMINISTIC_UPDATE = TRUE | FALSE
    JSON_INDENT = <num>
    LOCK_TIMEOUT = <num>
    QUERY_TAG = <string>
    ROWS_PER_RESULTSET = <num>
    S3_STAGE_VPCE_DNS_NAME = <string>
    SEARCH_PATH = <string>
    SIMULATED_DATA_SHARING_CONSUMER = <string>
    STATEMENT_TIMEOUT_IN_SECONDS = <num>
    STRICT_JSON_OUTPUT = TRUE | FALSE
    TIMESTAMP_DAY_IS_ALWAYS_24H = TRUE | FALSE
    TIMESTAMP_INPUT_FORMAT = <string>
    TIMESTAMP_LTZ_OUTPUT_FORMAT = <string>
    TIMESTAMP_NTZ_OUTPUT_FORMAT = <string>
    TIMESTAMP_OUTPUT_FORMAT = <string>
    TIMESTAMP_TYPE_MAPPING = <string>
    TIMESTAMP_TZ_OUTPUT_FORMAT = <string>
    TIMEZONE = <string>
    TIME_INPUT_FORMAT = <string>
    TIME_OUTPUT_FORMAT = <string>
    TRANSACTION_DEFAULT_ISOLATION_LEVEL = <string>
    TWO_DIGIT_CENTURY_START = <num>
    UNSUPPORTED_DDL_ACTION = <string>
    USE_CACHED_RESULT = TRUE | FALSE
    WEEK_OF_YEAR_POLICY = <num>
    WEEK_START = <num>
Copy

备注

为了便于阅读,此处不包括可为用户设置的会话参数的完整列表。有关所有会话参数的完整列表及其说明,以及账户和对象参数,请参阅 参数

参数

name

指定要更改的用户的标识符。如果标识符包含空格或特殊字符,则整个字符串必须放在双引号内。放在双引号内的标识符也区分大小写。

如果省略标识符,则语句将修改活动(即已登录)用户。适用 ` 使用说明 `_ (本主题内容)中描述的限制。

RENAME TO new_name

指定用户的新标识符;对于账户来说必须唯一。

有关更多信息,请参阅 标识符要求

RESET PASSWORD

生成一个可以与用户共享的 URL,该 URL 将打开一个网页,用户可以在其中输入新密码。生成的 URL 可使用一次,4 小时后过期。

请注意,指定此参数 不会 使用户的当前密码失效。用户可以继续使用当前密码,直到通过 URL 重置密码。

如果您希望使用户当前的密码无效,请改用 SET PASSWORD = 'string',这会将用户的密码更改为新值。

ABORT ALL QUERIES

中止用户当前运行或计划的所有查询和其他 SQL 语句,而不考虑在哪个仓库上运行/计划查询。

请注意,用户仍然可以登录 Snowflake 并启动新查询。

如果要中止所有正在运行/计划的查询并阻止用户登录 Snowflake 或启动新查询,请改为指定 SET DISABLED = TRUE

ADD DELEGATED AUTHORIZATION OF ROLE role_name TO SECURITY INTEGRATION integration_name;

添加用户同意,以使用特定集成的指定角色启动会话。

有关更多详细信息,请参阅 添加 OAuth 用户同意的委派授权

REMOVE DELEGATED AUTHORIZATION OF ROLE role_name FROM SECURITY INTEGRATION integration_name. REMOVE DELEGATED AUTHORIZATIONS FROM SECURITY INTEGRATION integration_name

撤消用户的同意:

  • 第一个语法撤消对指定角色的指定安全集成的同意。这样做的效果是撤消与集成和特定角色关联的任何 OAuth 访问令牌。

  • 第二个语法撤消指定安全集成中的所有同意。这样做的效果是撤消与集成相关的任何 OAuth 访问令牌。

有关更多详细信息,请参阅:

{ AUTHENTICATION | PASSWORD | SESSION } POLICY policy_name

为用户指定以下策略之一:

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

指定 标签 名称和标签字符串值。

标签值始终为字符串,标签值的最大字符数为 256。

有关在语句中指定标签的信息,请参阅 对象和列的标签配额

对象属性 (objectProperties)

SET property_name = property_value [ ... ]. UNSET property_name [ , ... ]

指定要设置或取消设置的一个(或多个)对象属性以供使用。取消设置对象属性会将其重置回默认值。

TYPE = { PERSON | SERVICE | LEGACY_SERVICE | NULL }

更改用户的类型。您可以设置此属性以区分人工、服务和旧版服务用户。有关这些用户类型的特征,请参阅 用户类型

PERSON

与 Snowflake 进行交互的人类用户。

SERVICE

用户是指无需人类干预即可与 Snowflake 进行交互的服务或应用程序。

如果用户使用 ALTER USER 命令将其 TYPE 属性设置为 SERVICE,则不兼容的属性将保持存储状态,但不通过 DESCRIBE USER 等命令返回。不能使用 ALTER USER 命令设置不兼容的属性。

如果将 TYPE 属性设置为 SERVICE 的用户更改为将 TYPE 属性设置为 PERSONNULL 的用户,则恢复并更改不兼容的属性,包括 PASSWORD 属性。

LEGACY_SERVICE

TYPE 属性设置为 LEGACY_SERVICE 的用户表示非交互式集成。与 SERVICE 类似,但允许密码和 SAML 身份验证。

NULL

功能与 PERSON 相同。

有关可以设置的其他对象属性(例如PASSWORD、LOGIN_NAME、DEFAULT_ROLE),请参阅 CREATE USER

备注

无法修改 EXT_AUTHN_DUOEXT_AUTHN_UID 对象属性。

要启用或禁用 多重身份验证,请修改用户的 DISABLE_MFA 属性。账户管理员执行 ALTER USER 命令将 DISABLE_MFA 设置为 TRUE 时,EXT_AUTHN_DUO 属性的值将自动设置为 FALSE

有关设置和取消设置属性的更多常规详细信息,请参阅 ` 使用说明 `_ (本主题内容)。

对象参数 (objectParams)

SET ...

指定要为用户设置的一个(或多个)参数(用空格、逗号或换行符分隔)。

ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = { TRUE | FALSE }

控制由于语法或解析错误而失败的查询在查询历史记录中的显示方式。如果值为 FALSE,则在提供查询历史记录的视图、页面和函数中编辑失败查询的内容。

此参数控制查看查询历史记录的用户的行为,而不是执行查询的用户的行为。

用户只有具有被授予或继承 AUDIT 权限的角色才能设置 ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR 参数。

ENABLE_UNREDACTED_SECURE_OBJECT_ERROR = { TRUE | FALSE }

控制是否在元数据中编辑与安全对象相关的错误消息。有关安全对象的错误消息编辑的更多信息,请参阅 安全对象:编辑错误消息中的信息

用户只有具有被授予或继承 AUDIT 权限的角色才能设置 ENABLE_UNREDACTED_SECURE_OBJECT_ERROR 参数。

使用 ALTER USER 命令为特定用户将参数设置为 TRUE 时,请修改要查看查询文本的用户,而不是执行查询的用户(如果这些用户是不同的用户)。

NETWORK_POLICY = string

指定对用户处于活动状态的 网络策略

此外,有关设置和取消设置参数的更多常规详细信息,请参阅 ` 使用说明 `_ (本主题内容)。

UNSET ...

指定要为用户取消设置的属性,将其重置为默认值。

  • NETWORK_POLICY

  • SESSION POLICY

  • TAG tag_name [ , tag_name ... ]

会话参数 (sessionParams)

SET session_param_name = param_value [ ... ]. UNSET session_param_name [ , ... ]

指定要为用户设置或取消设置的一个或多个会话参数。取消设置会话参数会将其重置回默认值。

有关可以设置的会话参数(ABORT_DETACHED_SESSION、AUTOCOMMIT 等)的更多详细信息,请参阅 参数

此外,有关设置和取消设置参数的更多常规详细信息,请参阅 ` 使用说明 `_ (本主题内容)。

使用说明

  • 只有对用户拥有 OWNERSHIP 权限的角色或更高级别的角色才能执行此命令来修改大多数用户属性。

    小技巧

    使用 SET PASSWORD = 'string' 更改用户密码时,建议同时指定 MUST_CHANGE_PASSWORD = TRUE 以强制用户登录 Web 界面并更改其密码,然后才能通过任何其他界面(例如 SnowSQL 或其他客户端应用程序)登录 Snowflake。

    或者,使用 RESET PASSWORD 生成用户更改密码要访问的网页 URL。

  • 只有具有 ACCOUNTADMIN 角色的用户才能设置以下参数:

    • PREVENT_UNLOAD_TO_INLINE_URL

    • PREVENT_UNLOAD_TO_INTERNAL_STAGES

  • 单个用户可以自行执行 ALTER USER 命令(即通过在命令中指定其用户名/标识符)并更改以下内容:

    • DEFAULT_WAREHOUSE

    • DEFAULT_NAMESPACE

    • DEFAULT_ROLE

    • 任何用户会话参数默认值

    请注意,用户 不能 使用此命令更改其密码。出于安全原因,Snowflake 仅允许用户从 Web 界面中更改其密码。

    但是,具有适当权限的管理员可以将此命令与 SET PASSWORD = 'string' 结合使用来更改用户的密码。

    小技巧

    更改用户密码时,建议同时指定 MUST_CHANGE_PASSWORD = TRUE 以强制用户登录 Web 界面并更改其密码,然后才能通过任何其他界面(例如 SnowSQL 或其他客户端应用程序)登录 Snowflake。

    或者,使用 RESET PASSWORD 生成用户更改密码要访问的网页 URL。

  • ALTER USER 语句 不会 验证默认对象(DEFAULT_WAREHOUSEDEFAULT_NAMESPACEDEFAULT_ROLE)是否存在。请注意,DEFAULT_SECONDARY_ROLES 不接受对象名称作为值,但 ALTER USER 语句会验证是否指定了支持的值。

  • 您可以使用单个 ALTER 语句设置和取消设置多个对象属性和对象/会话参数:

    • 设置多个属性/参数时,用空格、逗号或换行符将它们分隔。

    • 取消设置多个属性/参数时,必须 用逗号将它们分隔。此外,取消重置属性/参数时,请仅指定名称;指定属性/参数的值将返回错误。

  • 如果为用户指定 SET DISABLED = TRUE,则会发生以下情况:

    • 用户当前运行或计划的所有查询和其他 SQL 语句都将中止,并且用户无法启动其他查询。

    • 用户被 Snowflake 锁定,无法再次登录。

    如果只想中止用户的所有正在运行和计划的查询/语句,请改用 ABORT ALL QUERIES

  • 如果用户的 TYPE 属性为 SERVICE,则无法使用以下命令:

    • ALTER USER RESET PASSWORD

    • ALTER USER SET DISABLE_MFA = TRUE

  • 关于元数据:

    注意

    客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段

示例

user1 重命名为 user2

ALTER USER user1 RENAME TO user2;
Copy

将名为 user1 的用户的密码设置为 H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt,并要求用户通过登录 Snowflake Web 界面来更改其密码:

ALTER USER user1 SET PASSWORD = 'H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt' MUST_CHANGE_PASSWORD = TRUE;
Copy

用户的类型 更改为与 Snowflake 进行编程交互的应用程序:

ALTER USER user1 SET TYPE = SERVICE;
Copy

移除用户的现有注释:

ALTER USER user1 UNSET COMMENT;
Copy

默认不激活次要角色:

ALTER USER user1 SET DEFAULT_SECONDARY_ROLES = ();
Copy

默认激活所有次要角色:

ALTER USER user1 UNSET DEFAULT_SECONDARY_ROLES;
Copy

OR

ALTER USER user1 SET DEFAULT_SECONDARY_ROLES = ('ALL');
Copy
语言: 中文