【DM】达梦数据库中的用户管理与角色管理

用户管理

达梦中的三权分立与四权分立

"三权分立"时系统内置三种系统管理员,包括数据库管理员、数据库安全员和数据库审计员,四权分立”时新增了一类用户,称为数据库对象操作员。它们各司其职,互相制约,有效地避免了将所有权限集中于一人的风险,保证了系统的安全性。

数据库管理员(DBA)

  • 三权分立:负责评估数据库运行所需的软、硬件环境、安装和升级 DM数据库、配置 DM数据库参数、创建主要的数据库存储结构(表空间)和对象(如表、视图、索引、角色、用户等)、监控和优化数据库性能、数据导入导出以及数据库的备份和恢复等。
  • 四权分立:在原有“三权分立”基础上调整自主访问控制权限,只具有“三权分立”中 DBA角色预设的一部分与数据库管理相关的明确的数据库权限,如数据库创建、备份、还原和校验等。

数据库安全员(SSO)

  • 制定安全策略,定义新的数据库安全员,设置系统的安全等级、范围和组,并为主、客体定义安全标记,从而全面提升系统安全性。

数据库审计员(AUDITOR)

  • 数据库审计员可以设置要审计的对象和操作、定义新的数据库审计员、查看和分析审计记录。

数据库对象操作员(DBO)

  • 数据库对象操作员是“四权分立”新增加的一类用户,可以创建数据库对象,并对自己拥有的数据库对象(表、视图、存储过程、序列、包、外部链接)具有所有的对象权限并可以授出与回收,但其无法管理与维护数据库对象。

创建用户及维护

创建用户

首先以SYSDBA的身份登录,然后执行如下操作:
在这里插入图片描述
该操作创建了一个用户名为test713,密码为test123456的用户.

修改密码

在这里插入图片描述

该操作将test713的密码修改为了test654321.

锁定

在这里插入图片描述

解锁

在这里插入图片描述

权限分配

在这里插入图片描述

为test713分配建表权限.

删除

在这里插入图片描述

用户和模式的关系

在达梦数据库中通过create user创建用户时,会同时创建一个同名的模式.也可以通过create schema语句单独创建模式,并授权给某个已存在的用户.因此在达梦数据库中用户与模式是1:N的关系.

模式的创建及基本操作

创建

在这里插入图片描述

这条语句创建了一个名叫TEST713且属于用户SYSDBA的模式.

删除

在这里插入图片描述

表空间

表空间的创建及基本操作

创建

在这里插入图片描述

上面的操作创建了一个名为test713的表空间,数据文件位于D盘的\DM\data\data\DAMENG\test713.dbf路径下,文件大小为128M.

修改

改名

在这里插入图片描述

将表空间名由test713修改为test317.

增加数据文件

在这里插入图片描述

在同一路径下为test317增加一个名为test317.dbf的数据文件,大小为128M.

为数据文件扩容

在这里插入图片描述

将test317.dbf扩容到200M.

重命名数据文件

在这里插入图片描述

需要在脱机模式下进行,该操作不仅可以修改数据文件名,你愿意的话,还可以修改数据文件路径.

修改表空间的自动扩展属性

在这里插入图片描述

D:\test317.dbf的自动扩展属性修改为每次扩展10M,最大文件大小为1000M.

删除表空间

在这里插入图片描述

HUGE表空间的基本操作

创建HTS

在这里插入图片描述

  • 表空间名在服务器中必须唯一.
  • HTS表空间不支持创建MIRROR镜像文件.

为HTS添加路径

在这里插入图片描述

  • 一个HTS表空间最多支持255个路径.

删除HTS

在这里插入图片描述

  • 未被使用的表空间才能被删除.

角色

预定义角色

  • DBA:DM数据库系统中对象与数据操作的最高权限集合,拥有构建数据库的全部特权,只有DBA才可以创建数据库结构.
  • RESOURCE:可以创建数据库对象,对有权限的对象进行数据操纵,不可以创建数据库结构.
  • PUBLIC:不可以创建数据库对象,只能对有权限的数据库对象进行操纵.

角色管理

角色查看

在这里插入图片描述

创建角色

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lKMEt3M1-1595234373287)(E:\文档\达梦\学习记录\7.13非模式对象管理.assets\image-20200713113417953.png)]

角色添加权限

grant select on table1 to role1;
grant create table to role1;
grant role1 to test1;
  • 第一行将表table1的查询权限赋给role1;
  • 第二行将创建表的权限赋给role1;
  • 第三行将role1角色赋给用户test1.

删除角色

在这里插入图片描述

权限

数据库权限

数据库权限是与数据库安全相关的非常重要的权限,其权限范围比对象权限更加广泛,因而一般被授予数据库管理员或者一些具有管理功能的角色.

数据库权限与DM预定义角色有着重要联系,一些数据库权限由于权力较大,只集中在几个DM系统预定义角色中,且不能转授.

种类

数据库权限 说明
CREATE TABLE 在自己的模式中创建表的权限
CREATE VIEW 在自己的模式中创建视图的权限
CREATE USER 创建用户的权限
CREATE TRIGGER 在自己的模式中创建触发器的权限
ALTER USER 修改用户的权限
ALTER DATABASE 修改数据库的权限
CREATE PROCEDURE 在自己的模式中创建存储程序的权限

DM提供了100余种数据库权限,上表仅列出了常用的一些.

权限的分配和回收

分配

  • 授权者须具有对应的数据库权限及其转授权;
  • 接受者必须与授权者用户类型一致;
  • 如果有WITH ADMIN OPTION选项,接受者可以把这些权限转授给其他用户/角色.

例如,系统管理员SYSDBA把建表和建视图的权限授予给用户TEST并允许其转授.

GRANT CREATE TABLE,CREATE VIEW TO TEST WITH ADMIN OPTION;

回收

  • 权限回收者必须是具有回收相应数据库权限以及转授权的用户;
  • ADMIN OPTION FOR选项的意义是取消用户或角色的转授权限,但是权限不回收.

例如,SYSDBA把用户的建表权限收回.

REVOKE CREATE TABLE FROM TEST;

SYSDBA在不收回TEST用户建视图权限的情况下不让其转授建视图权限.

REVOKE ADMIN OPTION FOR CREATE VIEW FROM TEST;

对象权限

种类

数据库对象类型
对象权限
视图 存储程序 类型 序列 目录
SELECT
INSERT
DELETE
UPDATE
REFERENCES
DUMP
EXCUTE
READ
WRITE
USAGE

权限的分配和回收

分配

  • 授权者必须是具有对应对象权限及其转授权限的用户;
  • 如未指定对象的模式名,模式为授权者所在的模式.DRECTORY为非模式对象,没有模式;
  • 如设定了对象类型,则该类型必须与对象的实际类型一致,否则会报错;
  • 带WITH GRANT OPTION授予权限给用户时,接受权限的用户可转授此权限;
  • 不带列清单授权时,如果对象上存在同类型的列权限,会全部自动合并;
  • 对于用户所在的模式的表,用户具有所有权限而不需特别指定;
  • 当授权语句中使用了ALL PRIVILEGES时,会将指定的数据库对象上所有的对象权限都授予被授权者.

例1:SYSDBA把PERSON.ADDRESS表的全部权限授予给用户TEST.

GRANT SELECT,INSERT,DELETE,UPDATE,REFERENCES ON PERSON.ADDRESS TO TEST;
该句也可写成如下形式:
GRANT ALL PRIVILEGES ON PERSON.ADDRESS TO TEST;

在这里插入图片描述

例2: 假设用户 TEST 创建了存储过程 TEST_PROC,数据
库管理员 SYSDBA 把该存储过程的执行权 EXECUTE 授给已存在用户 TEST2,并使其具有该权限的转授权。

GRANT EXECUTE ON PROCEDURE TEST.TEST_PROC TO TEST2 WITH GRANT OPTION;

在这里插入图片描述

现在以TEST2的身份登录服务器执行这个存储过程:

在这里插入图片描述

例3:假设 SYSDBA 是表 BOOKSHOP_T1 的创建者,用户 BOOKSHOP_USER1、BOOKSHOP_USER2、BOOKSHOP_USER3 存在,且都不是 DBA 权限用户。

(1)以 SYSDBA 身份登录,并执行语句:
GRANT SELECT ON BOOKSHOP_T1 TO BOOKSHOP_USER1 WITH GRANT OPTION;
在这里插入图片描述

(2)以 BOOKSHOP_USER1 身份登录,并执行语句:
GRANT SELECT ON SYSDBA.BOOKSHOP_T1 TO BOOKSHOP_USER2;
在这里插入图片描述

(3)以 BOOKSHOP_USER2 身份登录,并执行语句:
GRANT SELECT ON SYSDBA.BOOKSHOP_T1 TO BOOKSHOP_USER3;
在这里插入图片描述

例4:用户 SYSDBA 创建一个名为 V_PRODUCT 的视图,要求对于该视图,允许BOOKSHOP_USER1 能够进行查询、插入、删除和更新操作,用户BOOKSHOP_USER2 和BOOKSHOP_USER3 也可进行同样的工作,但要求其操作权限由用户 BOOKSHOP_USER1 控制。

(1)以 SYSDBA 的身份登录:
在这里插入图片描述

(2)以用户 BOOKSHOP_USER1 的身份登录:
在这里插入图片描述

回收

  • 权限回收者必须是具有回收相应对象权限以及转授权的用户;

  • 回收时不能带列清单,若对象上存在同类型的列权限,则一并被回收;

  • 使用GRANT OPTION FOR选项的目的是回收用户或角色权限转授的权利,而不回收用户或角色的权限;并且GRANT OPTION FOR选项不能和RESTRICT一起使用,否则会报错;

  • 在回收权限时,设定不同的回收选项,其意义不同

    • 若不设定回收选项,无法回收授予时带WITH GRANT OPTION的权限,但也不会检查要回收的权限是否存在限制;
    • 若设定为RESTRICT,无法回收授予时带WITH GRANT OPTION的权限,也无法回收存在限制的权限,如角色上的某权限被别的用户用于创建视图等;
    • 若设定为CASCADE,可回收授予时或不带WITH GRANT OPTION的权限,若带WITH GRANT OPTION还会引起级联回收.

例1:SYSDBA 从用户 TEST 处回收其授出的PERSON.ADDRESS 表的全部权限。

在这里插入图片描述

例2:SYSDBA 从用户 TEST2 处回收其授出的存储过
程 TEST.TEST,PROC 的 EXECUTE 权限。

在这里插入图片描述

例3:假定系统中存在非 SYSDBA 用户 BOOKSHOP_USER1、BOOKSHOP_USER2、BOOKSHOP_USER3 和 BOOKSHOP_USER4,其中 BOOKSHOP_USER1 具有 CREATE TABLE数据库权限,BOOKSHOP_USER2 具有 CREATE VIEW 数据库权限,且已成功执行了如下的语句:

登录BOOKSHOP_USER1

在这里插入图片描述

登录BOOKSHOP_USER2

在这里插入图片描述

登录BOOKSHOP_USER3

在这里插入图片描述

登录BOOKSHOP_USER4
在这里插入图片描述

此时,若 BOOKSHOP_USER1 执行以下语句会引起之前授予的 INSERT(ID)权限被合并。

GRANT INSERT ON T1 TO BOOKSHOP_USER2 WITH GRANT OPTION;
若 BOOKSHOP_USER1 执行以下语句,会成功,因为这种方式不检查权限是否存在限制。
REVOKE SELECT ON T1 FROM PUBLIC;
在这里插入图片描述

若 BOOKSHOP_USER1 执行以下语句,则会失败,因为这种方式检查权限是否存在限制,即 BOOKSHOP_USER2 利用此权限创建了视图 V1。
REVOKE SELECT ON T1 FROM PUBLIC RESTRICT;

在这里插入图片描述

若 BOOKSHOP_USER1 执行以下语句,会进行级联回收 BOOKSHOP_USER2、BOOKSHOP_USER3、BOOKSHOP_USER4 授出的 INSERT(ID)权限。
REVOKE INSERT ON T1 FROM BOOKSHOP_USER2 CASCADE;
但若 BOOKSHOP_USER1 连续执行了以下两条语句,则后一条语句仅回收其授予BOOKSHOP_USER2 的权限,而不会产生级联回收,因为有另一条路经授予了BOOKSHOP_USER3 同样的权限 INSERT(ID)。
GRANT INSERT ON T1 TO BOOKSHOP_USER3 WITH GRANT OPTION;REVOKE INSERT ON T1 FROM BOOKSHOP_USER2 CASCADE;

猜你喜欢

转载自blog.csdn.net/qq_42229092/article/details/107466911