CREATE DATABASE ROLE¶
创建新的 数据库角色 或替换系统中现有的数据库角色。
创建数据库角色后,您可以为该数据库角色授予对象权限,然后将该数据库角色授予其他数据库角色或账户角色,以启用系统对象的访问控制安全性。
该命令支持以下变体:
CREATE OR ALTER DATABASE ROLE:创建新的数据库角色(如果不存在)或更改现有数据库角色。
小技巧
您还可以使用 Snowflake REST APIs 来执行此操作。有关信息,请参阅 创建数据库角色(REST 端点参考)。
- 另请参阅:
GRANT <privileges>、GRANT DATABASE ROLE、GRANT OWNERSHIP、DROP DATABASE ROLE、ALTER DATABASE ROLE、SHOW DATABASE ROLES、CREATE <object> ...CLONE、CREATE OR ALTER <对象>
语法¶
CREATE [ OR REPLACE ] DATABASE ROLE [ IF NOT EXISTS ] <name>
[ COMMENT = '<string_literal>' ]
变体语法¶
CREATE OR ALTER DATABASE ROLE¶
如果应用程序角色尚不存在,则创建一个新的数据库角色,或者将现有的数据库角色转换为语句中定义的角色。CREATE OR ALTER DATABASE ROLE 语句遵循 CREATE DATABASE ROLE 语句的语法规则,并具有与 ALTER DATABASE ROLE 语句相同的限制。
CREATE OR ALTER DATABASE ROLE <name>
[ COMMENT = '<string_literal>' ]
有关更多信息,请参阅 CREATE OR ALTER DATABASE ROLE 使用说明。
必填参数¶
name
指定数据库角色的标识符(即名称);对于创建角色的数据库来说必须是唯一的。
标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如
"My object"
)。放在双引号内的标识符也区分大小写。如果未以
db_name.database_role_name
的形式来完全限定标识符,则该命令将在会话的当前数据库中创建数据库角色。有关更多详细信息,请参阅 标识符要求。
可选参数¶
COMMENT = 'string_literal'
指定数据库角色的注释。
默认:无值
访问控制要求¶
权限 |
对象 |
备注 |
---|---|---|
CREATE DATABASE ROLE |
数据库 |
具有数据库 OWNERSHIP 权限的角色可以将 CREATE DATABASE ROLE 权限授予另一个账户角色。 |
OWNERSHIP |
数据库角色 |
需要为 现有 数据库角色执行 CREATE OR ALTER DATABASE ROLE 语句。 OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色。
一般使用说明¶
创建数据库角色时,会自动授予该数据库角色包含了数据库角色的数据库的 USAGE 权限。
小心
避免重新创建数据库角色(使用 OR REPLACE 关键字)。在后台,重新创建对象(使用 CREATE OR REPLACE <object>)首先会删除对象,然后创建该对象。重新创建数据库角色会将数据库角色从其被授予的任何共享中删除。必须再次向这些共享授予数据库角色。
如果必须重新创建数据库角色,请通知包含该数据库角色的共享的任何数据使用者。他们必须再次向自己的账户角色授予数据库角色。
关于元数据:
注意
客户应确保在使用 Snowflake 服务时,不会将个人数据(用户对象除外)、敏感数据、出口管制数据或其他受监管数据作为元数据输入。有关更多信息,请参阅 Snowflake 中的元数据字段。
CREATE OR ALTER DATABASE ROLE 使用说明¶
ALTER DATABASE ROLE 命令的所有限制均适用。
不支持设置或取消设置标签;然而,现有标签不会被 CREATE OR ALTER DATABASE ROLE 语句更改,依然保持原样。
示例¶
在数据库 d1
中创建数据库角色 dr1
:
CREATE DATABASE ROLE d1.dr1;