CQL(Cassandra 查询语言)中的数据库角色

dbmscassandradatabase更新于 2026/2/1 19:22:17

与 Apache Cassandra NoSQL 数据库通信时,需要使用 Cassandra 查询语言 (CQL)。可以使用 CQL 定义数据库角色并为其分配权限,这是 CQL 的一大特性。用户访问和权限在数据库中通过 Cassandra 的角色进行管理。

本文将讨论 Cassandra 中的角色及其工作原理,并提供使用 CQL 创建、更改和删除角色的示例。

Cassandra 的角色包含哪些内容?

Cassandra 中的角色是一种对象,它指定了一组可授予单个用户或用户组的权限。可以通过角色限制对数据库资源的访问。它们可用于授予或撤销执行特定数据库任务的权限,例如创建或编辑表或运行查询。

Cassandra 支持三种不同的角色

  • 超级用户 − 此角色拥有所有数据库资源的完全访问权限。

  • Cassandra − 此角色可以管理性地访问数据库,但无法执行某些需要超级用户权限的任务。

  • DataStax − 此角色拥有数据库的管理访问权限,由 Cassandra 的营利性实现 DataStax Enterprise 使用。

在 CQL 中创建角色

在 Cassandra 中,可以使用 CREATE ROLE 语句创建新角色。创建新角色的语法如下:-

语法

CREATE ROLE role_name WITH PASSWORD = 'password' AND OPTIONS = {...};

Role_name 是将要创建的角色的名称,password 是此语句中角色的密码。您可以使用 choices 子句(可选)为职位定义额外的选项,例如登录权限或创建新角色的权限。

示例

以下是如何在 CQL 中创建新作业的示例:-

CREATE ROLE my_role WITH PASSWORD = 'my_password' AND LOGIN = true;

在此示例中,将创建一个名为 my_role 的新角色,密码为 my_password。由于 LOGIN 选项设置为 true,因此用户可以使用此角色登录数据库。

输出

角色"my_role"已创建

此命令创建一个名为"my_role"的新角色,其参数为"my_password"表示密码,"true"表示登录权限。在 Cassandra 数据库中,此角色现在可用于向用户或其他角色授予权限。

在 CQL 中向角色授予权限

在创建角色后,可以使用 GRANT 语句为其分配权限。为角色分配权限的语法如下:-

语法

GRANT privilege_name ON resource_name TO role_name;

在此语句中,要提供的权限、要授予该权限的资源以及要授予该权限的角色均通过 privilege_name、resource_name 和 role_name 三个术语来标识。

示例

以下是如何在 CQL 权限中提供角色的示例:-

GRANT SELECT, INSERT, UPDATE ON my_keyspace.my_table TO my_role;

在此示例中,我们授予 my_role 角色对 my_keyspace 键空间中 my_table 表的 SELECT、INSERT 和 UPDATE 操作的访问权限。

输出

上述 CQL 查询将授予"my_role"角色对"my_keyspace"键空间中"my_table"表的 SELECT、INSERT 和 UPDATE 权限。

此查询不会提供任何输出。如果查询成功,给定角色将立即获得请求的权限。

在 CQL 中修改角色

Cassandra 中的 ALTER ROLE 语句可用于更改角色。更改角色的语法如下:-

语法

ALTER ROLE role_name WITH PASSWORD = 'new_password' AND OPTIONS = {...};

role_name 是此语句中要更改的角色的名称,OPTIONS 可用于定义该角色的新选项。

示例

以下是如何在 CQL 中更改作业的示例:-

ALTER ROLE my_role WITH PASSWORD = 'new_password';

在此示例中,my_role 角色正在被修改,其密码将更改为 new_password。

输出

此命令会将现有角色的当前密码"my_role"替换为新密码"new_password"。如果查询运行正常,则查询本身不会产生任何其他输出。但是,为了使任何后续使用此角色的查询或操作都要求身份验证成功,必须使用更改后的密码。

在 CQL 中撤销角色

使用 REVOKE 语句,也可以撤销 Cassandra 中角色的权限。以下语法用于撤销特定角色的权限 -

语法

REVOKE privilege_name ON resource_name FROM role_name;

privilege_name、resource_name 和 role_name 分别表示此语句中要从每个资源和角色撤销的相应权限的名称。

示例

以下是在 CQL 中撤销角色权限的示例 -

REVOKE SELECT, INSERT, UPDATE ON my_keyspace.my_table FROM my_role;

在此示例中,我们将撤销 my_role 角色对 my_keyspace 键空间中 my_table 表的 SELECT、INSERT 和 UPDATE 权限。

输出

指定的 CQL 查询将删除"my_role"角色对"my_keyspace"键空间中"my_table"表的 SELECT、INSERT 和 UPDATE 权限。

此查询不会提供任何输出。如果查询运行正常,则已删除指定角色的权限。

在 CQL 中删除角色

Cassandra 中的 DROP ROLE 语句可用于删除角色。删除角色的语法如下:

语法

DROP ROLE role_name;

在此语句中,要删除的角色名称为 role_name。

以下是如何在 CQL 中删除角色的示例 -

示例

DROP ROLE my_role;

在本例中,我们将删除数据库中的 my_role 角色。

输出

使用此查询将从 Cassandra 键空间中删除"my_role"角色。如果该角色存在且查询成功,则该角色将被删除,并且不会显示更多输出。如果角色不存在,查询仍会正确运行,但键空间将保持不变,并且不会显示任何输出。

结论

Cassandra 角色系统是一个强大的工具,用于控制数据库内部的用户访问和权限。借助角色,您可以指定一组权限,这些权限可以提供给一个用户或一组用户,并管理他们对数据库资源的访问权限。在本文中,我们研究了如何使用 CQL 创建、编辑和删除角色,以及授予和撤销这些角色的访问权限。使用 Cassandra 需要了解职责,这也有助于您更有效地管理数据库资源。


相关文章