达梦数据库权限和预定角色介绍

概述

本文对达梦数据库数据库和对象权限及DM预定义角色及角色创建进行介绍。

1.权限管理

用户权限有两类:数据库权限和对象权限。

数据库权限主要是指针对数据库对象的创建、删除、修改的权限,对数据库备份等权限。

数据库权限一般由 SYSDBA、SYSAUDITOR 和 SYSSSO 指定,也可以由具有特权的其他用户授予。

而对象权限主要是指对数据库对象中的数据的访问权限。

对象权限一般由数据库对象的所有者授予用户,也可由 SYSDBA 用户指定,或者由具有该对象权限的其他用户授权。

1.1 数据库权限

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

表1.1 常用的几种数据库权限

数据库权限 说明
CREATE TABLE 在自己的模式中创建表的权限
CREATE VIEW 在自己的模式中创建视图的权限
CREATE USER 创建用户的权限
CREATE TRIGGER 在自己的模式中创建触发器的权限
ALTER USER 修改用户的权限
ALTER DATABASE 修改数据库的权限
CREATE PROCEDURE 在自己模式中创建存储程序的权限
SELECT ANY DICTIONARY 查询任意系统表或系统视图的记录的权限

不同类型的数据库对象,其相关的数据库权限也不相同。

bash 复制代码
例如,对于表对象,相关的数据库权限包括:

CREATE TABLE:创建表
CREATE ANY TABLE:在任意模式下创建表
ALTER ANY TABLE:修改任意表
DROP ANY TABLE:删除任意表
INSERT TABLE:插入表记录
INSERT ANY TABLE:向任意表插入记录
UPDATE TABLE:更新表记录
UPDATE ANY TABLE:更新任意表的记录
DELETE TABLE:删除表记录
DELETE ANY TABLE:删除任意表的记录
SELECT TABLE:查询表记录
SELECT ANY TABLE:查询任意表的记录
REFERENCES TABLE:引用表
REFERENCES ANY TABLE:引用任意表
DUMP TABLE:导出表
DUMP ANY TABLE:导出任意表
GRANT TABLE:向其他用户进行表上权限的授权
GRANT ANY TABLE:向其他用户进行任意表上权限的授权
FLASHBACK TABLE:闪回表
FLASHBACK ANY TABLE:闪回任意表
而对于存储程序对象,其相关的数据库权限则包括:

CREATE PROCEDURE:创建存储程序
CREATE ANY PROCEDURE:在任意模式下创建存储程序
DROP ANY PROCEDURE:删除任意存储程序
EXECUTE PROCEDURE:执行存储程序
EXECUTE ANY PROCEDURE:执行任意存储程序
GRANT PROCEDURE:向其他用户进行存储程序上权限的授权
GRANT ANY PROCEDURE:向其他用户进行任意存储程序上权限的授权

需要说明的是,表、视图、触发器、存储程序等对象为模式对象,在默认情况下对这些对象的操作都是在当前用户自己的模式下进行的。

如果要在其他用户的模式下操作这些类型的对象,需要具有相应的 ANY 权限。例如,要能够在其他用户的模式下创建表,当前用户必须具有 CREATE ANY TABLE 数据库权限,如果希望能够在其他用户的模式下删除表,必须具有 DROP ANY TABLE 数据库权限。

1.2 对象权限

对象权限主要是对数据库对象中的数据的访问权限,主要用来授予需要对某个数据库对象的数据进行操纵的数据库普通用户。表 1.2 列出了主要的对象权限。

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

以下几种权限重点说明下:

目录对象的 READ 和 WRITE 权限指可以读或写访问某个目录对象的权限。

域对象的 USAGE 权限指可以使用某个域对象的权限。拥有某个域的 USAGE 权限的用户可以在定义或修改表时为表列声明使用这个域。

当一个用户获得另一个用户的某个对象的访问权限后,可以以"模式名.对象名"的形式访问这个数据库对象。

对象权限的授予一般由对象的所有者完成,也可由 SYSDBA 或具有某对象权限且具有转授权限的用户授予,但最好由对象的所有者完成。

2.角色管理

角色是一组权限的组合,使用角色的目的是使权限管理更加方便。角色中的权限既可以是数据库权限,也可以是对象权限,还可以是别的角色。

为了使用角色,首先在数据库中创建一个角色,这时角色中没有任何权限。

然后向角色中添加权限。

最后将这个角色授予用户,这个用户就具有了角色中的所有权限。

在使用角色的过程中,可以随时向角色中添加权限,也可以随时从角色中删除权限,用户的权限也随之改变。如果要回收所有权限,只需将角色从用户回收即可。

2.1DM 预定义角色

在 DM 数据库中有两类角色,一类是 DM 预设定的角色,一类是用户自定义的角色。DM 提供了一系列的预定义角色以帮助用户进行数据库权限的管理。预定义角色在数据库被创建之后即存在,并且已经包含了一些权限,数据库管理员可以将这些角色直接授予用户。

表2.1 "三权分立"常见的数据库预设定的角色

角色名称 角色简单说明
DBA DM 数据库系统中对象与数据操作的最高权限集合,拥有构建数据库的全部特权,只有 DBA 才可以创建数据库结构
RESOURCE 可以创建数据库对象,对有权限的数据库对象进行数据操纵,不可以创建数据库结构
PUBLIC 不可以创建数据库对象,只能对有权限的数据库对象进行数据操纵
VTI 具有系统动态视图的查询权限,VTI 默认授权给 DBA 且可转授
SOI 具有非审计/安全系统表的查询权限
SVI 具有基础 V 视图的查询权限
DB_AUDIT_ADMIN 数据库审计的最高权限集合,可以对数据库进行各种审计操作,并创建新的审计用户
DB_AUDIT_OPER 可以对数据库进行各种审计操作,但不能创建新的审计用户
DB_AUDIT_PUBLIC 无实际权限
DB_AUDIT_VTI 具有系统动态视图的查询权限,DB_AUDIT_VTI 默认授权给 DB_AUDIT_ADMIN 且可转授
DB_AUDIT_SOI 具有与审计操作相关的系统表的查询权限
DB_AUDIT_SVI 具有基础 V 视图和审计 V 视图的查询权限
DB_POLICY_ADMIN 数据库强制访问控制的最高权限集合,可以对数据库进行强制访问控制管理,并创建新的安全管理用户
DB_POLICY_OPER 可以对数据库进行强制访问控制管理,但不能创建新的安全管理用户
DB_POLICY_PUBLIC 无实际权限
DB_POLICY_VTI 具有系统动态视图的查询权限,DB_POLICY_VTI 默认授权给 DB_POLICY_ADMIN 且可转授
DB_POLICY_SOI 具有与安全操作相关的系统表的查询权限
DB_POLICY_SVI 具有基础 V 视图和安全 V 视图的查询权限

初始时仅有管理员具有创建用户的权限,每种类型的管理员创建的用户缺省就拥有这种类型的 PUBLIC 和 SOI 预定义角色,如 SYSAUDITOR 新创建的用户缺省就具有 DB_AUDIT_PUBLIC 和 DB_AUDIT_SOI 角色。之后管理员可根据需要进一步授予新建用户其他预定义角色。

管理员也可以将"CREATE USER"权限转授给其他用户,这些用户之后就可以创建新的用户了,他们创建的新用户缺省也具有与其创建者相同类型的 PUBLIC 预定义角色。

2.2 创建角色和赋权使用

使用说明:

  1. 创建者必须具有 CREATE ROLE 数据库权限;
  2. 角色名的长度不能超过 128 个字符;
  3. 角色名不允许和系统已存在的用户名重名;
  4. 角色名不允许是 DM 保留字。
bash 复制代码
su - dmdba 
disql SYSDBA/Dameng123@127.0.0.1:5238
create role "ROLEDXH";

给角色赋权:

bash 复制代码
grant CREATE TABLE,CREATE VIEW,CREATE INDEX TO "ROLEDXH";

创建用户:

bash 复制代码
create user "DXHTEST" identified by "Dameng123" default tablespace "DXHTBS";

角色赋权给用户:

bash 复制代码
grant "ROLEDM" to "DXHTEST";

总结

通过上面介绍能了解到达梦数据库的数据库权限、对象权限内容;

了解达梦数据库预定义的角色及创建使用角色。

关于达梦数据库更多学习内容,欢迎访问达梦社区:
https://eco.dameng.com

相关推荐
Ai 编码助手2 小时前
MySQL中distinct与group by之间的性能进行比较
数据库·mysql
陈燚_重生之又为程序员2 小时前
基于梧桐数据库的实时数据分析解决方案
数据库·数据挖掘·数据分析
caridle2 小时前
教程:使用 InterBase Express 访问数据库(五):TIBTransaction
java·数据库·express
白云如幻2 小时前
MySQL排序查询
数据库·mysql
萧鼎2 小时前
Python并发编程库:Asyncio的异步编程实战
开发语言·数据库·python·异步
^velpro^2 小时前
数据库连接池的创建
java·开发语言·数据库
荒川之神3 小时前
ORACLE _11G_R2_ASM 常用命令
数据库·oracle
IT培训中心-竺老师3 小时前
Oracle 23AI创建示例库
数据库·oracle
小白学大数据3 小时前
JavaScript重定向对网络爬虫的影响及处理
开发语言·javascript·数据库·爬虫
time never ceases3 小时前
使用docker方式进行Oracle数据库的物理迁移(helowin/oracle_11g)
数据库·docker·oracle