在本文中,我们将讨论 Cassandra 查询语言中的数据库角色。为不同类型的用户创建不同的角色以提供具有特定要求的访问非常重要。它用于为数据库用户或用户组提供安全性。
角色名称可以简单地定义如下。
role_name ::= identifier | string
- 创建角色:
在 CQL 中,我们可以使用 CREATE 命令语句创建角色。 CREATE 命令有助于为用户或用户组创建角色。
句法 :
create_role_statement ::= CREATE ROLE [ IF NOT EXISTS ] role_name
[ WITH role_options ]
role_options ::= role_option ( AND role_option )*
role_option ::= PASSWORD '=' string
| LOGIN '=' boolean
| SUPERUSER '=' boolean
| OPTIONS '=' map_literal
| ACCESS TO DATACENTERS set_literal
| ACCESS TO ALL DATACENTERS
-
来源
syntax :
CREATE ROLE new_role_name;
-
例如:
要创建简单用户和超级用户角色,然后使用以下 CQL 查询。
CREATE ROLE Ashish WITH PASSWORD = 'pass_a'
AND LOGIN = true;
CREATE ROLE Rana WITH PASSWORD = 'pass_r'
AND LOGIN = true
AND SUPERUSER = true;
-
要为具有更多限制的用户创建数据库角色,例如如果用户只能访问特定数据中心,则使用以下 CQL 查询创建此类角色。
CREATE ROLE user1 WITH OPTIONS = { 'option1' : 'option1_value',
'option2' : 98 };
CREATE ROLE Ashish WITH PASSWORD = 'pass_a'
AND LOGIN = true
AND ACCESS TO DATACENTERS {'DC1', 'DC4'};
CREATE ROLE Rana WITH PASSWORD = 'pass_r'
AND LOGIN = true
AND ACCESS TO ALL DATACENTERS;
-
如果我们想有条件地创建角色,那么我们可以使用以下 CQL 查询。
CREATE ROLE IF NOT EXISTS role_name;
- 改变角色:
如果我们想更改之后已经创建的现有角色,我们可以使用 ALTER ROLE 语句修改角色。
Syntax :
alter_role_statement ::= ALTER ROLE role_name
WITH role_options
-
例如:
改变角色之前
CREATE ROLE Rana WITH PASSWORD = 'pass_r'
AND LOGIN = true
AND SUPERUSER = true;
- 改变角色后
ALTER ROLE Rana WITH PASSWORD = 'pass_r'
AND SUPERUSER = false;
- 删除角色:
如果用户想要删除现有角色,那么我们可以使用以下 CQL 查询来删除角色。
句法 :
drop_role_statement ::= DROP ROLE [ IF EXISTS ] role_name
-
例如:
DROP ROLE Ashish;
- 授予角色:
它用于授予 ROLE 用于其他用途。
句法:
grant_role_statement ::= GRANT role_name
TO role_name
-
例如:
GRANT user1 TO Ashish;
- 此语句将 user1 角色授予 Ashish。 Ashish 还获得了授予 user1 的任何权限。
- 撤销角色:
如果用户想要撤销数据库角色,那么我们可以使用 REVOKE ROLE 语句。
句法:
revoke_role_statement ::= REVOKE role_name
FROM role_name
- 例如:
REVOKE user1 FROM Ashish;
-
上面的 CQL 查询语句撤销了 Ashish 的 user1 角色。 Ashish 通过 user1 角色获得的任何权限也将被撤销。
- 列表角色:
如果用户想要列出所有角色,那么我们可以使用以下 CQL 查询来列出所有角色。
句法 :
list_roles_statement ::= LIST ROLES [ OF role_name ]
[ NORECURSIVE ]
- 例如:
LIST ROLES;
- 此 CQL 查询语句返回系统中需要对数据库角色资源具有 DESCRIBE 权限的所有已知角色。