CREATE DATABASE ROLE

创建新的 数据库角色 或替换系统中现有的数据库角色。

创建数据库角色后,您可以为该数据库角色授予对象权限,然后将该数据库角色授予其他数据库角色或账户角色,以启用系统对象的访问控制安全性。

该命令支持以下变体:

小技巧

您还可以使用 Snowflake REST APIs 来执行此操作。有关信息,请参阅 创建数据库角色(REST 端点参考)

另请参阅:

GRANT <privileges>GRANT DATABASE ROLEGRANT OWNERSHIPDROP DATABASE ROLEALTER DATABASE ROLESHOW DATABASE ROLESCREATE <object> ...CLONECREATE OR ALTER <对象>

语法

CREATE [ OR REPLACE ] DATABASE ROLE [ IF NOT EXISTS ] <name>
  [ COMMENT = '<string_literal>' ]
Copy

变体语法

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>' ]
Copy

有关更多信息,请参阅 CREATE OR ALTER DATABASE ROLE 使用说明

必填参数

name

指定数据库角色的标识符(即名称);对于创建角色的数据库来说必须是唯一的。

标识符必须以字母字符开头,且不能包含空格或特殊字符,除非整个标识符字符串放在双引号内(例如 "My object")。放在双引号内的标识符也区分大小写。

如果未以 db_name.database_role_name 的形式来完全限定标识符,则该命令将在会话的当前数据库中创建数据库角色。

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

可选参数

COMMENT = 'string_literal'

指定数据库角色的注释。

默认:无值

访问控制要求

用于执行此 SQL 命令的 角色 必须至少具有以下 权限

权限

对象

备注

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).

有关创建具有指定权限集的自定义角色的说明,请参阅 创建自定义角色

有关对 安全对象 执行 SQL 操作的相应角色和权限授予的一般信息,请参阅 访问控制概述

一般使用说明

  • 创建数据库角色时,会自动授予该数据库角色包含了数据库角色的数据库的 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;
Copy
语言: 中文