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> COMMENT = '<string_literal>'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> 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 中的密码的更多信息,请参阅 密码策略。
默认:
NULL
LOGIN_NAME = string
用户在登录系统时输入的名称。用户的登录名在整个账户中必须是唯一的。
登录名可以是任何字符串,包括空格和非字母数字字符,如感叹号 (
!
)、百分号 (%
) 和星号 (*
);但是,如果字符串包含空格或非字母数字字符,则必须将其放在在单引号或双引号中。登录名始终不区分大小写。Snowflake 允许指定不同的用户名和登录名,以便使用通用标识符(例如电子邮件地址)进行登录。
默认:用户名/标识符(即如果未指定值,则将指定的
name
值用作登录名)DISPLAY_NAME = string
在 Snowflake Web 界面中为用户显示的名称。
默认:用户名/标识符(即如果未指定值,则将指定的
name
值用作显示名称)FIRST_NAME = string
、.MIDDLE_NAME = string
、.LAST_NAME = string
用户的名字、中间名和姓氏。
默认:
NULL
EMAIL = string
用户的电子邮件地址。
使用 Snowflake 不需要电子邮件地址;但是,要访问 Snowflake 社区以打开支持部门工单或为社区论坛做出贡献,则必须为用户指定一个有效的电子邮件地址。
我们建议指定企业电子邮件地址,而不是个人电子邮件地址。用户的电子邮件地址对 Snowflake 账户中的所有其他用户可见。
默认:
NULL
MUST_CHANGE_PASSWORD = TRUE | FALSE
指定是否强制用户在下次登录(包括首次/初始登录)时更改其密码。
默认:
FALSE
DISABLED = TRUE | FALSE
指定用户是否被禁用,禁用后将无法执行以下操作:
对于新用户,该用户将被锁定在 Snowflake 之外,无法登录。
对于现有用户,设置该属性会终止其当前运行的所有查询,并且不允许用户发出任何新查询;用户也会立即被锁定在 Snowflake 之外,无法重新登录。
默认:
FALSE
DAYS_TO_EXPIRY = integer
指定用户状态设置为“已过期”且不再允许用户登录的天数。这有助于定义临时用户(即应仅在有限时间内访问 Snowflake 的用户)。一般而言,您不应为 :ref:` 账户管理员 <label-accountadmin_users>` (即具有 ACCOUNTADMIN 角色的用户)设置此属性,因为当他们成为“过期”用户时,Snowflake 会将他们锁定。
设置后,该值将倒数到
0
,但不会停止。负值表示用户的状态为“已过期”。要重置该值,请使用 ALTER USER 设置以下值:要将用户重新启用为临时用户,请将该值设置为大于
0
的值。要将用户指定为永久用户,请将值设置为
NULL
或0
。
默认:
NULL
MINS_TO_UNLOCK = integer
指定在清除用户登录的临时锁定之前的分钟数。为了防止未经授权的用户登录,Snowflake 会在用户连续五次尝试登录失败后对其进行临时锁定:
正值表示用户的状态为“已锁定”。
该值倒数到
0
(或负值)后,锁定将被清除,并允许用户再次登录。当用户成功登录 Snowflake 时,该值将重置为
NULL
。
创建用户时,可以设置此属性来阻止用户登录,直到指定的时间过去。
要立即移除用户的锁定,请使用 ALTER USER 并指定此参数的
0
值。默认:
NULL
DEFAULT_WAREHOUSE = string
指定登录时默认为用户会话激活的虚拟仓库。
用户可以使用 ALTER USER 指定或更改其当前的默认虚拟仓库。此外,在会话启动(即登录)后,用户可以使用 USE WAREHOUSE 更改会话的虚拟仓库。
请注意,CREATE USER 操作不会验证仓库是否存在。
默认:
NULL
DEFAULT_NAMESPACE = string
指定登录时默认为用户会话激活的命名空间(仅数据库或数据库和架构)。
要仅指定数据库,请输入数据库名称。
要指定架构,请以
db_name.schema_name
的形式输入完全限定的架构名称。
用户可以使用 ALTER USER 指定或更改其当前的默认命名空间。此外,在启动会话(即登录)后,用户可以使用 USE DATABASE 或 USE SCHEMA 更改其会话的命名空间。
请注意,CREATE USER 操作不会验证命名空间是否存在。
默认:
NULL
DEFAULT_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 语句的活动次要角色。 同样的逻辑也适用于从用户处撤消的角色。
默认:
NULL
MINS_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 公钥的指纹;用于根据组织设置的过期计划轮换 密钥对身份验证 的公钥和私钥。
COMMENT = 'string_literal'
指定用户的注释。
默认:
NULL
可选对象参数 (objectParams
)¶
ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR = { TRUE | FALSE }
控制由于语法或解析错误而失败的查询在查询历史记录中的显示方式。如果值为 FALSE,则在提供查询历史记录的视图、页面和函数中编辑失败查询的内容。
此参数控制查看查询历史记录的用户的行为,而不是执行查询的用户的行为。
用户只有具有被授予或继承 AUDIT 权限的角色才能设置 ENABLE_UNREDACTED_QUERY_SYNTAX_ERROR 参数。
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. |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
使用说明¶
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
CREATE OR REPLACE <object> 语句是原子的。也就是说,当对象被替换时,旧对象将被删除,新对象将在单个事务中创建。
示例¶
创建一个具有所有默认属性、默认角色和基本密码的用户,用户在首次登录后必须更改密码:
CREATE USER user1 PASSWORD='abc123' DEFAULT_ROLE = myrole DEFAULT_SECONDARY_ROLES = ('ALL') MUST_CHANGE_PASSWORD = TRUE;