签到成功

知道了

CNDBA社区CNDBA社区

DM 达梦数据库 用户管理 说明

2019-08-26 18:06 17319 0 原创 DM 达梦
作者: dave

在之前的博客我们看DM数据的安装和启动,如下:

Linux 平台 达梦 DM7 单实例 安装手册 详细截图版
https://www.cndba.cn/dave/article/3565
linux 平台 达梦DM 7 数据库 启动与关闭
https://www.cndba.cn/dave/article/3566

本篇我们来了解一下DM的用户管理。http://www.cndba.cn/cndba/dave/article/3567

1 背景知识说明

在DM数据库中用户管理主要涉及到三块:用户、权限、和角色。http://www.cndba.cn/cndba/dave/article/3567

1.1 用户管理

这里涉及到2个概念,用户和模式,在Oracle里也存在这2个概念。 用户是用来连接数据库并进行相关操作的。 而模式是一个用户拥有的所有数据库对象的集合,每个用户都有自己默认的模式,用户默认的模式名和用户名相同。http://www.cndba.cn/cndba/dave/article/3567

从DM的官方手册,我们可以看到创建用户的语法:http://www.cndba.cn/cndba/dave/article/3567

CREATE USER <用户名> IDENTIFIED <身份验证模式> [PASSWORD_POLICY <口令策略>][<锁定子句>][<存储加密密钥>][<空间限制子句>][<只读标志>][<资源限制子句>][<允许 IP 子句>][<禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<INDEX_TABLESPACE 子句>];

这里面的选项很多,但在实际使用中主要涉及如下几点:用户名、密码、资源限制、模式、默认表空间和权限。
另外注意一点,DM7的用户名不区分字母大小写,在DM7中统一保存为大写。http://www.cndba.cn/cndba/dave/article/3567

1.1.1 创建用户时的注意事项

1. <用户名>: 指明要创建的用户名称,用户名称最大长度 128 字节;
2. <口令策略>可以为以下值,或其任何组合:
    0 无策略;
    1 禁止与用户名相同;
    2 口令长度不小于 9;
    4 至少包含一个大写字母(A-Z);
    8 至少包含一个数字(0-9);
    16 至少包含一个标点符号(英文输入法状态下,除“ 和空格外的所有符号)。
    若为其他数字,则表示以上设置值的和,如 3=1+2,表示同时启用第 1 项和第 2 项策略。当设置为 0 时,表示设置口令没有限制,但总长度不得超过 48 个字节。另外,若不指定该项,则默认采用系统配置文件中 PWD_POLICY 所设值。
3. 空间限制子句用于限制用户使用的最大存储空间,以 M 为单位,取值范围为 1 到1048576,关键字 UNLIMITED 表示无限制;
4. 只读标志表示该登录是否只能对数据库作只读操作,默认为可读写;
5. 完整的资源设置项可以参考官方手册。这里列几个常用的配置项:
    SESSION_PER_USER:实例中用户可以同时拥有的会话数量,最大为32768,默认值是OS提供的最大值。
    CONNECT_IDLE_TIME: 会话最大空闲时间(单位:1 分钟),默认为无限制。
    FAILED_LOGIN_ATTEMPS:将引起一个账户被锁定的连续注册失败的次数,设置范围1到 100,默认为3。
    PASSWORD_LOCK_TIME:如果超过FAILED_LOGIN_ATTEMPS 设置值, 账户将被锁定的分钟数。最大为1440(1 天),默认为1.
    PASSWORD_LIFE_TIME: 口令在其终止前可以使用的天数,设置范围1到 365,默认为无限制。
6.如果没有指定用户默认表空间,则系统指定 MAIN 表空间为用户的默认表空间;用户默认表空间和索引默认表空间不能使用SYSTEM、RLOG、ROLL、TEMP 表空间。
7. 如果没有指定用户默认索引表空间,则 HUGE 表的索引缺省存储在用户的默认表空间中,普通表的索引缺省存储在表的聚集索引所在的表空间中。临时表的索引永远在 TEMP 表空间;
6. 系统预先设置了四个用户,分别为 SYSDBA、SYSAUDITOR、 SYSSSO 和SYS,其中SYSDBA 具备 DBA 角色,SYSAUDITOR 具备 DB_AUDIT_ADMIN 角色,而 SYSSSO具备 DB_POLICY_ADMIN 系统角色;

1.1.2 修改用户的注意事项

1.每个用户均可修改自身的口令,SYSDBA 用户可强制修改所有其他用户的口令(在数据库验证方式下);
2.只有具备 ALTER USER 权限的用户才能修改其身份验证模式、系统角色及资源限制项;
3. 不论 dm.ini 的 DDL_AUTO_COMMIT 设置为自动提交还是非自动提交,ALTER USER 操作都会被自动提交;
4. 修改用户口令时,口令策略应符合创建该用户时指定的口令策略;
5.系统固定用户不能修改其系统角色和资源限制项;

1.1.3 删除用户的注意事项

1.系统自动创建的三个系统用户 SYSDBA、SYSAUDITOR 和 SYSSSO 不能被删除;
2.具有相应的 DROP USER 权限的用户即可进行删除用户操作;
3.执行此语句将导致 DM 删除数据库中该用户建立的所有对象,且不可恢复。
4.如果未使用 CASCADE 选项,若该用户建立了数据库对象 (如表、视图、过程或函数),或其他用户对象引用了该用户的对象,或在该用户的表上存在其它用户建立的视图,DM 将返回错误信息,而不删除此用户;
5.如果使用了 CASCADE 选项,除数据库中该用户及其创建的所有对象被删除外,如果其他用户创建的表引用了该用户表上的主关键字或唯一关键字,或者在该表上创建了视图,DM 还将自动删除相应的引用完整性约束及视图依赖关系;
6.正在使用中的用户可以被删除,删除后重登录或者做操作会报错。

1.2 DM 系统管理员类型

DM 数据库实现了 B1 级安全特性。

  1. “三权分立”的安全机制,将系统管理员分数据库管理员、数据库安全员和数据库审计员三类。在安装过程中,DM 数据库会预设数据库管理员账号SYSDBA、数据库安全员账号 SYSSSO 和数据库审计员账号 SYSAUDITOR,其缺省口令都与用户名一致。
  2. “四权分立”的安全机制,将系统管理员分数据库管理员、数据库对象操作员、数据库安全员和数据库审计员四类,在“三权分立”的基础上,新增数据库对象操作员账户SYSDBO,其缺省口令为 SYSDBO。用户需要在安装过程中或者安装完毕后立即修改缺省口令,避免因口令泄漏造成的安全问题。

1. 数据库管理员(DBA)

“三权分立”的安全机制,每个 DM 数据库至少需要一个数据库管理员来管理,负责评估数据库运行所需的软、硬件环境、安装和升级 DM 数据库、配置 DM 数据库参数、创建主要的数据库存储结构(表空间)和对象(如表、视图、索引、角色、用户等)、监控和优化数据库性能、数据导入导出以及数据库的备份和恢复等。

http://www.cndba.cn/cndba/dave/article/3567

“三权分立”时数据库管理员既可进行系统管理和维护工作,也可对数据内容进行增删查改动作。根据国产数据库军事使用要求,数据库管理员只能进行系统管理和维护工作,不能对数据内容进行增删查改,数据库应用人员则可操作数据内容,而不能管理和维护系统。

“四权分立”的安全机制,在原有“三权分立”基础上调整自主访问控制权限,只具有“三权分立”中 DBA 角色预设的一部分与数据库管理相关的明确的数据库权限,如数据库创建、备份、还原和校验等。

2. 数据库安全员(SSO)

对于很多对安全性要求不高的系统来说,C2 级安全特性已经能够工作得很好,此时不需要考虑通过数据库安全员来进一步加强系统的安全机制。但是在很多大型的系统中,安全性还是至关重要的,有必要由安全员来制定安全策略,强化系统安全机制,此时数据库安全员的主要任务就是制定安全策略,定义新的数据库安全员,设置系统的安全等级、范围和组,并为主、客体定义安全标记,从而全面提升系统安全性。

3.数据库审计员(AUDITOR)

数据库审计员可以设置要审计的对象和操作、定义新的数据库审计员、查看和分析审计记录。通过设置审计,几乎可以跟踪任何人在系统内执行的任何操作,为事后追查提供便利。

http://www.cndba.cn/cndba/dave/article/3567
http://www.cndba.cn/cndba/dave/article/3567

4. 数据库对象操作员(DBO)

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

1.3 权限与角色管理

权限是指执行特定类型SQL命令或访问其他模式对象的权利,它用于限制用户可执行的操作。权限分两种:

  1. 系统权限:主要指对数据库对象的创建、删除、修改、已经备份恢复等权限
  2. 对象权限:主要指对数据库对象中的数据的操作权限。

角色是将具有相同权限的用户组织在一起,这一组具有相同权限的用户称为角色。 角色是权限的集合,一个权限可赋予不用的角色。
数据库管理类的预定义角色有三个: DBA、PUBLIC、RESOURCE。http://www.cndba.cn/cndba/dave/article/3567

2 操作示例

2.1 查看用户和权限的信息

所有的用户管理操作都可以在DM 的管理工具中进行,我们这里通过视图查看相应的权限信息。

#查看角色信息
#之前说管理类是9个角色,还有其他是审计和安全类的
[dave@www.cndba.cn cndba]$ disql SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 10.518(ms)
disql V7.6.0.145-Build(2019.03.20-104220)ENT 

#查看所有角色:
SQL> select * from dba_roles;

LINEID     ROLE             PASSWORD_REQUIRED AUTHENTICATION_TYPE
---------- ---------------- ----------------- -------------------
1          DBA              NULL              NULL
2          DB_AUDIT_ADMIN   NULL              NULL
3          DB_AUDIT_OPER    NULL              NULL
4          DB_AUDIT_PUBLIC  NULL              NULL
5          DB_POLICY_ADMIN  NULL              NULL
6          DB_POLICY_OPER   NULL              NULL
7          DB_POLICY_PUBLIC NULL              NULL
8          PUBLIC           NULL              NULL
9          RESOURCE         NULL              NULL
10         SYS_ADMIN        NULL              NULL

10 rows got

#查看所有用户的信息:
SQL> select username,user_id,account_status from dba_users;

LINEID     USERNAME   USER_ID     ACCOUNT_STATUS
---------- ---------- ----------- --------------
1          SYSSSO     50331651    OPEN
2          DMHR       50331748    OPEN
3          SYSDBA     50331649    OPEN
4          SYS        50331648    OPEN
5          SYSAUDITOR 50331650    OPEN

used time: 20.061(ms). Execute id is 173.
SQL> 

#查看系统中所有用户对应的角色:
SQL> select * from dba_role_privs;

LINEID     GRANTEE    GRANTED_ROLE     ADMIN_OPTION DEFAULT_ROLE
---------- ---------- ---------------- ------------ ------------
1          SYSDBA     DBA              Y            NULL
2          DMHR       PUBLIC           N            NULL
3          DMHR       RESOURCE         N            NULL
4          SYSSSO     DB_POLICY_PUBLIC Y            NULL
5          SYSSSO     DB_POLICY_OPER   Y            NULL
6          SYSSSO     DB_POLICY_ADMIN  Y            NULL
7          SYSAUDITOR DB_AUDIT_PUBLIC  Y            NULL
8          SYSAUDITOR DB_AUDIT_OPER    Y            NULL
9          SYSAUDITOR DB_AUDIT_ADMIN   Y            NULL
10         SYSDBA     SYS_ADMIN        N            NULL
11         SYSDBA     PUBLIC           Y            NULL
12         SYSDBA     RESOURCE         Y            NULL

12 rows got

#通过dba_sys_privs视图可以查看系统中角色对应的权限。 
SQL> select distinct grantee from dba_sys_privs;

LINEID     GRANTEE         
---------- ----------------
1          DBA
2          RESOURCE
3          PUBLIC
4          DB_AUDIT_ADMIN
5          DB_AUDIT_OPER
6          DB_AUDIT_PUBLIC
7          DB_POLICY_ADMIN
8          DB_POLICY_OPER
9          DB_POLICY_PUBLIC

9 rows got

SQL> select * from dba_sys_privs where grantee='DBA' and rownum<10;                      

LINEID     GRANTEE PRIVILEGE        ADMIN_OPTION
---------- ------- ---------------- ------------
1          DBA     ALTER DATABASE   YES
2          DBA     RESTORE DATABASE YES
3          DBA     CREATE USER      NO
4          DBA     ALTER USER       NO
5          DBA     DROP USER        NO
6          DBA     CREATE ROLE      YES
7          DBA     CREATE SCHEMA    YES
8          DBA     CREATE TABLE     YES
9          DBA     CREATE VIEW      YES

9 rows got

2.2 用户操作

#创建用户:
SQL> create user dave identified by "www.cndba.cn" limit connect_time 3;
executed successfully
used time: 6.336(ms). Execute id is 181.

#对用户授权:
SQL> grant public,resource to dave;
executed successfully
used time: 3.683(ms). Execute id is 182.
SQL> 

#登陆dave用户:
SQL> conn dave/"www.cndba.cn"

Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 11.017(ms)
SQL> 


#查看当前用户:
SQL> select username from user_users;

LINEID     USERNAME
---------- --------
1          DAVE

used time: 17.873(ms). Execute id is 183.
SQL> select user();

LINEID     USER()
---------- ------
1          DAVE

used time: 1.353(ms). Execute id is 185.
SQL> 

SQL> create table dave as select * from sysobjects;
executed successfully
used time: 16.632(ms). Execute id is 186.

SQL> select count(1) from dave;

LINEID     COUNT(1)            
---------- --------------------
1          1505

used time: 1.460(ms). Execute id is 187.
SQL> 


#修改用户会话空闲期为无限制,最大连接数为 10。
SQL> conn SYSDBA/SYSDBA

Server[LOCALHOST:5236]:mode is normal, state is open
login used time: 7.369(ms)
SQL> alter user dave limit session_per_user 10, connect_idle_time unlimited;
executed successfully
used time: 8.256(ms). Execute id is 188.

#可以通过sysusers 数据字典查看这些资源的修改值:
SQL> desc sysusers;

LINEID     NAME            TYPE$        NULLABLE
---------- --------------- ------------ --------
1          ID              INTEGER      N
2          PASSWORD        VARCHAR(128) N
3          AUTHENT_TYPE    INTEGER      N
4          SESS_PER_USER   INTEGER      N
5          CONN_IDLE_TIME  INTEGER      N
6          FAILED_NUM      INTEGER      N
7          LIFE_TIME       INTEGER      N
8          REUSE_TIME      INTEGER      N
9          REUSE_MAX       INTEGER      N
10         LOCK_TIME       INTEGER      N
11         GRACE_TIME      INTEGER      N
12         LOCKED_STATUS   SMALLINT     N
13         LASTEST_LOCKED  DATETIME(0)  Y
14         PWD_POLICY      INTEGER      Y
15         RN_FLAG         INTEGER      Y
16         ALLOW_ADDR      VARCHAR(500) Y
17         NOT_ALLOW_ADDR  VARCHAR(500) Y
18         ALLOW_DT        VARCHAR(500) Y
19         NOT_ALLOW_DT    VARCHAR(500) Y
20         LAST_LOGIN_DTID VARCHAR(128) Y
21         LAST_LOGIN_IP   VARCHAR(128) Y
22         FAILED_ATTEMPS  INTEGER      Y
23         ENCRYPT_KEY     VARCHAR(256) Y

23 rows got

used time: 32.360(ms). Execute id is 189.


#删除用户:
SQL> drop user dave cascade;
executed successfully
used time: 41.465(ms). Execute id is 200.
SQL> 

SQL> select username from dba_users;

LINEID     USERNAME  
---------- ----------
1          SYSSSO
2          DMHR
3          SYSDBA
4          SYS
5          SYSAUDITOR

used time: 12.434(ms). Execute id is 203.
SQL>

用户管理的基本内容就就这么多,最后补充一句,以上所有操作都可以在DM的管理器中进行操作。

版权声明:本文为博主原创文章,未经博主允许不得转载。

用户评论
* 以下用户言论只代表其个人观点,不代表CNDBA社区的观点或立场
dave

dave

关注

人的一生应该是这样度过的:当他回首往事的时候,他不会因为虚度年华而悔恨,也不会因为碌碌无为而羞耻;这样,在临死的时候,他就能够说:“我的整个生命和全部精力,都已经献给世界上最壮丽的事业....."

  • 2297
    原创
  • 3
    翻译
  • 630
    转载
  • 198
    评论
  • 访问:9257655次
  • 积分:4528
  • 等级:核心会员
  • 排名:第1名
精华文章
    最新问题
    查看更多+
    热门文章
      热门用户
      推荐用户
        Copyright © 2016 All Rights Reserved. Powered by CNDBA · 皖ICP备2022006297号-1·

        QQ交流群

        注册联系QQ