达梦数据库的非模式对象:用户、表空间、角色、权限
目录
一、表空间管理
表空间是一个逻辑结构,对应数据文件为物理结构,DM中将数据的所有对象在逻辑上都存放在表空间中,而物理上都存储在所属表空间的数据文件中。
使用DM管理工具manager建表空间,十分方便,可以添加多个数据文件
DDL:create tablespace "TBS" datafile '/dm8/data/DAMENG/TBS01.DBF' size 32, '/dm8/data/DAMENG/TBS01.DBF' size 64 autoextend on next 1 maxsize 1024 CACHE = NORMAL;
1.数据文件创建后不能删除
强制删除,只能通过备份还原或弃用该表空间:
2.数据文件大小只能改大不能改小
3.修改数据文件名时需要表空间处于脱机状态(alter tablespace TBS offline; 恢复联机:alter tablespace TBS online;)(管理工具自动补全脱机和联机语句)
二、用户管理
DM中的管理员用户:
数据库管理员SYSDBA、数据库安全员SYSSSO、数据库审计员SYSAUDITOR、数据库对象操作员SYSDBO
达梦数据库采用三权分立或四权分立的安全机制,将系统中所有权限按照功能进行划分,为每个管理员分配相应的权限,各自的用户仅能做自己权限以内的事,且各用户之前能够相互监督,创建数据库时可以通过参数PRIV_FLAG设置三权分立或四权分立,仅DM安全版提供四权分立机制。
四权分立比三权分立多一个数据库对象操作员。
manager新建管理用户,可以指定使用表空间,未指定时默认使用main表空间:
DDL:create user "TEST" identified by "Dameng123" password_policy 0
default tablespace "TBS";
grant "PUBLIC","SOI","VTI" to "TEST";
查看用户所属表空间:
select username,account_status,default_tablespace,temporary_tablespace from dba_users;
这里授予TEST用户创建表的权限:
DDL:grant CREATE TABLE to "TEST";
使用TEST用户登录disql并建表,创建成功:
使用TEST2用户登录disql并建表,创建失败,因为TEST2没有创建表的权限
三、权限管理
DM中用户权限分为数据库权限和对象权限
1.数据库权限
数据库对象的创建、删除、修改,数据库的备份等权限,一般由SYSDBA/SYSAUDITOR/SYSSSO指定,也可以由具有特权的其他用户授予。
常用的数据库权限:
create table/view/user/trigger/procedure:在自己的模式中创建表/视图/用户/触发器/存储过程的权限
alter user/database:修改用户/数据库的权限
2.对象权限
对数据库对象中的数据的访问权限,一般由数据库对象的所有者授予用户,也可由SYSDBA用户指定,或由具有该对象权限的其他用户授权。
常用的对象权限:
select/insert/delete/update:分别针对数据库对象中数据的查询/插入/删除/修改的权限
reference:可以与一个表建立关联关系的权限
execute:用户可以执行另一个用户的存储程序、包、类等权限
read/write:可以读或写访问某个目录对象的权限
usage:可以使用某个域对象的权限
授予TEST用户创建表的权限,允许转授:
DDL:grant CREATE TABLE to "TEST" with admin option;
由TEST用户登录,并将建表权限转授给TEST2用户:
grant create table to TEST2;
再由TEST2用户登录验证权限,此时TEST2可以建表,说明权限授予成功
回收TEST用户转授建表权限的能力并验证:
revoke admin option for create table from TEST;
回收TEST用户的建表权限并验证,回收成功
revoke create table from TEST;
四、角色管理
角色是一组权限的组合,DM中包含预定义的角色(SYSDBA、SYSAUDITOR、SYSSSO、SYSDBO)和用户自定义的角色,预定义角色包含部分权限,管理员可以将角色直接授予给用户,自定义角色则需在创建后手动赋予权限,然后将该角色授予给需要的用户。
当用户较多时,将用户所需的共同权限授予给角色,然后直接将角色授予给这些用户,就不需要为每一个用户授予一次相同权限,在使用角色的过程中,可以随时修改角色权限,相应用户权限也随之改变,如果要回收所有权限,只需将角色从用户回收即可。
manager新建角色,同时可授予相应权限:
DDL:
create role "ROLE";
grant "DBA" to "ROLE";
grant CREATE TABLE,CREATE VIEW,CREATE INDEX to "ROLE";
这里同时还赋予了角色创建表、视图和索引的权限。
验证角色权限:
将角色授予给用户,SQL语句查看TEST用户是否拥有了角色的权限:
grant ROLE to TEST;
select granted_role from dba_role_privs where grantee='TEST';
使用TEST用户使用得到的权限:
删除角色,用户相应权限也被回收