跳到主要内容

用户和权限概述

用户

seekdb 的管理员为用户 root,可以创建普通用户,用户名称在 seekdb 内是唯一的。

权限

权限分为了 3 个级别:

  • 全局权限:可以影响整个 seekdb 的权限,例如:修改系统设置、访问所有的表等权限。

  • 数据库权限:可以影响某个特定数据库下所有对象的权限,例如:在对应数据库下创建删除表,访问表等权限。

  • 对象权限:可以影响某个特定对象的权限,例如:访问一个特定的表、视图或索引的权限。

关于详细的权限分类,参见 权限分类

权限转授

权限转授解决了授权者集中的问题。通过在授权时指定 with admin/grant option,可以同时授予用户将对应权限转授给其他用户的权限。回收对象权限时,要同时回收该用户转授给其他用户的对应权限,即 A 授予 B 权限,B 授予 C 权限,如果 A 收回 B 的权限,C 的权限也会被回收。回收系统权限时,不会级联回收转授的权限。

角色

为了方便权限的管理,seekdb 设定了角色。角色是一组系统权限、对象权限的组合,角色中也可以包含其他角色。可以把角色授予用户,用户就拥有了角色里面的所有权限。

seekdb 暂无系统内置的默认角色。关于角色管理的相关操作,参见 角色管理

间接权限

用户的权限,包含直接授予的系统权限或者对象权限,也包含授予角色后,通过角色包获得的权限。大部分操作需要的权限,不论是直接授予的还是通过角色间接拥有的权限,都可以满足条件。对于下列场景,需要有直接权限才可以:

  • 创建视图时,访问视图中的对象所需的权限。
  • 执行定义者权限的有名 PL 块中的语句所需的权限。

权限检查

在 SQL 解析阶段,解析出一条 SQL 语句中所需的所有权限,逐个检查用户是否拥有对应的权限。对于系统操作的权限,如果权限不足则直接报错权限不足。对于访问对象的权限,如果用户在这个对象上没有任何权限,则报错对象不存在;如果用户在这个对象上有其他权限,只是没有需要的权限,则报错权限不足。