CREATE USER¶
创建新用户或替换系统中的现有用户。有关更多详细信息,请参阅 用户管理。
备注
只有用户管理员(即拥有 USERADMIN 角色或更高角色的用户)或对账户拥有 CREATE USER 权限的其他角色才能创建用户。
语法¶
CREATE [ OR REPLACE ] USER [ IF NOT EXISTS ] <name>
[ objectProperties ]
[ objectParams ]
[ sessionParams ]
[ [ WITH ] TAG ( <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' , ... ] ) ]
其中:
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> 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 } WORKLOAD_IDENTITY = ( <list_of_properties> ) COMMENT = '<string_literal>'objectParams ::= ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = TRUE | FALSE ENABLE_UNREDACTED_SECURE_OBJECT_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> DEFAULT_NULL_ORDERING = <string> ENABLE_GET_DDL_USE_DATA_TYPE_ALIAS = TRUE | FALSE 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> 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用户的标识符;对于您的账户必须是唯一的。
标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如
"My object")。放在双引号内的标识符也区分大小写。有关更多详细信息,请参阅 标识符要求。
备注
用户 不会 使用此值登录 Snowflake;而是使用为 LOGIN_NAME 属性指定的值登录。但是,如果没有为用户明确指定登录名,用户名/标识符将作为默认登录名。
可选对象属性 (objectProperties)¶
PASSWORD = 'string'用户的密码必须放在单引号或双引号中。如果未指定密码,则在为用户明确指定密码之前,用户无法登录 Snowflake。
如果密码使用反斜杠(即
\)字符,则在 SQL 命令中指定密码时,请使用反斜杠转义该字符或使用双美元符号(即$$)分隔符。有关详细信息,请参阅 字符串和二进制数据类型。有关 Snowflake 中的密码的更多信息,请参阅 密码策略。
默认:
NULLLOGIN_NAME = string用户在登录系统时输入的名称。用户的登录名在整个账户中必须是唯一的。
登录名可以是任何字符串,包括空格和非字母数字字符,如感叹号 (
!)、百分号 (%) 和星号 (*);但是,如果字符串包含空格或非字母数字字符,则必须将其放在在单引号或双引号中。登录名始终不区分大小写。Snowflake 允许指定不同的用户名和登录名,以便使用通用标识符(例如电子邮件地址)进行登录。
默认:用户名/标识符(即如果未指定值,则将指定的
name值用作登录名)DISPLAY_NAME = string在 Snowflake Web 界面中为用户显示的名称。
默认:用户名/标识符(即如果未指定值,则将指定的
name值用作显示名称)FIRST_NAME = string、.MIDDLE_NAME = string、.LAST_NAME = string用户的名字、中间名和姓氏。
默认:
NULLEMAIL = string用户的电子邮件地址。
使用 Snowflake 不需要电子邮件地址;但是,要访问 Snowflake 社区以打开支持部门工单或为社区论坛做出贡献,则必须为用户指定一个有效的电子邮件地址。
我们建议指定企业电子邮件地址,而不是个人电子邮件地址。用户的电子邮件地址对 Snowflake 账户中的所有其他用户可见。
默认:
NULLMUST_CHANGE_PASSWORD = TRUE | FALSE指定是否强制用户在下次登录(包括首次/初始登录)时更改其密码。
默认:
FALSEDISABLED = TRUE | FALSE指定用户是否被禁用,禁用后将无法执行以下操作:
对于新用户,该用户将被锁定在 Snowflake 之外,无法登录。
对于现有用户,设置该属性会终止其当前运行的所有查询,并且不允许用户发出任何新查询;用户也会立即被锁定在 Snowflake 之外,无法重新登录。
默认:
FALSE
DAYS_TO_EXPIRY = integer指定用户状态设置为“已过期”且不再允许用户登录的天数。这有助于定义临时用户(即应仅在有限时间内访问 Snowflake 的用户)。
不允许为 账户管理员 <label-accountadmin_users>`(即具有 ACCOUNTADMIN 角色的用户)设置 ``DAYS_TO_EXPIRY`。如果为 账户管理员 设置
DAYS_TO_EXPIRY,Snowflake 会忽略该设置。设置后,该值将倒数到
0,但不会停止。负值表示用户的状态为“已过期”。要重置该值,请使用 ALTER USER 设置以下值:要将用户重新启用为临时用户,请将该值设置为大于
0的值。要将用户指定为永久用户,请将值设置为
NULL或0。
默认:
NULLMINS_TO_UNLOCK = integer指定在清除用户登录的临时锁定之前的分钟数。为了防止未经授权的用户登录,Snowflake 会在用户连续五次尝试登录失败后对其进行临时锁定:
正值表示用户的状态为“已锁定”。
该值倒数到
0(或负值)后,锁定将被清除,并允许用户再次登录。当用户成功登录 Snowflake 时,该值将重置为
NULL。
创建用户时,可以设置此属性来阻止用户登录,直到指定的时间过去。
要立即移除用户的锁定,请使用 ALTER USER 并指定此参数的
0值。默认:
NULLDEFAULT_WAREHOUSE = string指定登录时默认为用户会话激活的虚拟仓库。
用户可以使用 ALTER USER 指定或更改其当前的默认虚拟仓库。此外,在会话启动(即登录)后,用户可以使用 USE WAREHOUSE 更改会话的虚拟仓库。
请注意,CREATE USER 操作不会验证仓库是否存在。
默认:
NULLDEFAULT_NAMESPACE = string指定登录时默认为用户会话激活的命名空间(仅数据库或数据库和架构)。
要仅指定数据库,请输入数据库名称。
要指定架构,请以
db_name.schema_name的形式输入完全限定的架构名称。
用户可以使用 ALTER USER 指定或更改其当前的默认命名空间。此外,在启动会话(即登录)后,用户可以使用 USE DATABASE 或 USE SCHEMA 更改其会话的命名空间。
请注意,CREATE USER 操作不会验证命名空间是否存在。
默认:
NULLDEFAULT_ROLE = string指定登录时默认为用户会话激活的主要角色。主要角色是授权执行 CREATE <object> 语句或任何其他 SQL 操作的单一角色。执行这些操作的权限可以授予角色层次结构中的主要角色或任何较低角色。
请注意,为用户指定默认角色并 不会 将该角色授予用户。必须使用 GRANT ROLE 命令向用户明确授予角色。此外,CREATE USER 操作不会验证角色是否存在。
用户可以使用 ALTER USER 指定或更改其当前默认角色。此外,在启动会话(即登录)后,用户可以使用 USE ROLE 更改会话的角色。无论哪种情况,用户都只能从明确授予的角色中进行选择。
默认:
NULL
DEFAULT_SECONDARY_ROLES = ( 'ALL' ) | ()指定登录时用户会话处于活跃状态的辅助角色集。辅助角色是一组角色,用于授权除执行 CREATE <object> 语句 以外 的任何 SQL 操作。执行这些操作的权限可以授予主要角色、辅助角色或角色层次结构中的任何较低角色。
请注意,为用户指定默认辅助角色并 不会 将该角色授予用户。还必须使用 GRANT ROLE 命令向用户明确授予角色。
支持以下值:
('ALL')已授予用户的所有角色。
请注意,在执行每个 SQL 语句时,角色集都会重新进行评估。如果向用户授予其他角色,并且该用户执行新的 SQL 语句,则新授予的角色是新 SQL 语句的活动次要角色。 同样的逻辑也适用于从用户处撤销的角色。
()无角色。
默认:
ALLMINS_TO_BYPASS_MFA = integer指定用户临时绕过 MFA 的分钟数。
此属性可用于允许已注册 MFA 的用户在其 MFA 设备不可用时在登录事件期间暂时绕过 MFA。
RSA_PUBLIC_KEY = string指定用户的 RSA 公钥;用于 密钥对身份验证。
RSA_PUBLIC_KEY_FP = string指定用户 RSA 公钥的指纹;用于 密钥对身份验证。
RSA_PUBLIC_KEY_2 = string指定用户的第二个 RSA 公钥;用于根据组织设置的过期计划轮换 密钥对身份验证 的公钥和私钥。
RSA_PUBLIC_KEY_2_FP = string指定用户的第二个 RSA 公钥的指纹;用于根据组织设置的过期计划轮换 密钥对身份验证 的公钥和私钥。
TYPE = { PERSON | SERVICE | LEGACY_SERVICE }指定用户的类型。您可以设置此属性来区分人类用户、服务用户和旧版服务用户。有关这些用户类型的特征的信息,请参阅 用户类型。
PERSON用户是可以与 Snowflake 交互的人类用户。
SERVICE用户是指无需人类干预即可与 Snowflake 进行交互的服务或应用程序。
LEGACY_SERVICETYPE属性设置为LEGACY_SERVICE的用户表示非交互式集成。与SERVICE类似,但允许密码和 SAML 身份验证。
Default:
PERSON
WORKLOAD_IDENTITY = ( list_of_properties )Configures the user to authenticate by using workload identity federation.
The following list shows the properties:
TYPE = { AWS | AZURE | GCP | OIDC }Specifies the provider that issues the attestation that is sent by the application or workload to Snowflake.
ARN = 'string'Required for
TYPE=AWS. Not valid for other types.Specifies the Amazon Resource Identifier (ARN) that uniquely identifies the AWS user or role that is associated with the instance authenticating to Snowflake. Snowflake accepts the following forms of IAM identifiers (https://docs.aws.amazon.com/IAM/latest/UserGuide/reference_identifiers.html):
arn:aws:iam::account:user/user_name_with_patharn:aws:iam::account:role/role_name_with_patharn:aws:sts::account:assumed_role/role_name/role_session_name
For help obtaining the ARN, see Configure Snowflake.
ISSUER = 'string'Required for
TYPE=AZUREandTYPE=OIDC. Not valid for other types.For
TYPE=AZURE, specifies the Entra ID tenant's Authority URL in the following form:https://login.microsoftonline.com/tenant/v2.0For help obtaining this URL, see Configure Microsoft Azure.
For
TYPE=OIDC, specifies the OpenID Connect (OIDC) issuer URL. An OIDC provider is identified by its issuer URL.For examples of how to obtain this issuer URL for different OIDC providers, 开始使用.
SUBJECT = 'string'Required for
TYPE=AZURE,TYPE=GCP, andTYPE=OIDC. Not valid for other types.For
TYPE=AZURE, specifies the case-sensitive Object ID (Principal ID) of the managed identity assigned to the Azure workload.For
TYPE=GCP, specifies theuniqueIdproperty of the service account associated with the workload that is connecting to Snowflake.For help obtaining this identifier, see Configure Snowflake.
For
TYPE=OIDC, specifies the identifier of the workload that is connecting to Snowflake. The format of the value is specific to the OIDC provider that is issuing the attestation.For examples of how to construct the subject of an attestation issued by an OIDC provider, see 开始使用.
OIDC_AUDIENCE_LIST = ( 'string' [ , 'string' ... ] )Optional for
TYPE=OIDC. Not valid for other types.Specifies which values must be present in the
audclaim of the ID token issued by the OIDC provider. Snowflake accepts the attestation if theaudclaim contains at least one of the specified audiences.If omitted or empty, the audience is assumed to be
snowflakecomputing.cn.
COMMENT = 'string_literal'指定用户的注释。
默认:
NULL
可选对象参数 (objectParams)¶
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指定对用户处于活跃状态的 现有网络策略。交换访问令牌或刷新令牌的授权代码,以及使用刷新令牌获取新访问令牌时,网络策略会限制用户列表 IP 地址。
如果未设置此参数,则使用账户的网络策略(如果有)。
可选会话参数 (sessionParams)¶
指定要为用户设置的一个(或多个)会话参数默认值(用空格、逗号或换行符分隔)。用户每次登录 Snowflake 并启动会话时,都会设置这些默认值。用户始终可以在会话中使用 ALTER SESSION 自行更改这些默认值。
有关可为用户指定的会话参数(包括其默认值)的完整列表,请参阅 参数。
可选参数¶
访问控制要求¶
权限 |
对象 |
备注 |
|---|---|---|
CREATE USER |
账户 |
Only the USERADMIN role, or a higher role, has this privilege by default. The privilege can be granted to additional roles as needed. |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
The
TYPEproperty of a new user object can't beNULL. You can't set theTYPEproperty of an existing user toNULL. Running a CREATE USER command without setting theTYPEproperty sets theTYPEproperty for that user toPERSON.关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
The OR REPLACE and IF NOT EXISTS clauses are mutually exclusive. They can't both be used in the same statement.
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
示例¶
创建一个具有所有默认属性、默认角色和基本密码的用户,用户在首次登录后必须更改密码:
CREATE USER user1 PASSWORD='abc123' DEFAULT_ROLE = myrole DEFAULT_SECONDARY_ROLES = ('ALL') MUST_CHANGE_PASSWORD = TRUE;