ALTER USER¶
修改系统中现有用户的属性和对象/会话参数:
管理员可以使用此命令更改管理员具有相应权限的任何用户的属性和参数默认值。
单个用户可以使用此命令更改自己的特定属性和任何会话参数的默认值。有关更多详细信息,请参阅 ` 使用说明 `_ (本主题内容)。
还可用于中止用户提交的所有查询(和其他 SQL 语句)。
语法¶
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> } [ , ... ]
其中:
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> COMMENT = '<string>'objectParams ::= ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE NETWORK_POLICY = <string>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>
备注
为了便于阅读,此处不包括可为用户设置的会话参数的完整列表。有关所有会话参数的完整列表及其说明,以及账户和对象参数,请参阅 参数。
参数¶
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
为用户指定以下策略之一:
对象属性 (objectProperties
)¶
SET property_name = property_value [ ... ]
、.UNSET property_name [ , ... ]
指定要设置或取消设置的一个(或多个)对象属性以供使用。取消设置对象属性会将其重置回默认值。
有关可设置的对象属性的更多详细信息(例如 PASSWORD、LOGIN_NAME、DEFAULT_ROLE),请参阅 CREATE USER。
备注
无法修改 EXT_AUTHN_DUO
和 EXT_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 参数。
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。单个用户可以自行执行 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_WAREHOUSE
、DEFAULT_NAMESPACE
和DEFAULT_ROLE
)是否存在。请注意,DEFAULT_SECONDARY_ROLES
不接受对象名称作为值,但 ALTER USER 语句会验证是否指定了支持的值。您可以使用单个 ALTER 语句设置和取消设置多个对象属性和对象/会话参数:
设置多个属性/参数时,用空格、逗号或换行符将它们分隔。
取消设置多个属性/参数时,必须 用逗号将它们分隔。此外,取消重置属性/参数时,请仅指定名称;指定属性/参数的值将返回错误。
如果为用户指定
SET DISABLED = TRUE
,则会发生以下情况:用户当前运行或计划的所有查询和其他 SQL 语句都将中止,并且用户无法启动其他查询。
用户被 Snowflake 锁定,无法再次登录。
如果只想中止用户的所有正在运行和计划的查询/语句,请改用
ABORT ALL QUERIES
。关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
示例¶
将 user1
重命名为 user2
:
ALTER USER user1 RENAME TO user2;
将名为 user1
的用户的密码设置为 H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt
,并要求用户通过登录 Snowflake Web 界面来更改其密码:
ALTER USER user1 SET PASSWORD = 'H8MZRqa8gEe/kvHzvJ+Giq94DuCYoQXmfbb$Xnt' MUST_CHANGE_PASSWORD = TRUE;
移除用户的现有注释:
ALTER USER user1 UNSET COMMENT;