正德厚生,臻于至善

04.达梦DCA认证课程-DM用户和权限管理

1.用户管理

DM 默认的预定义用户:

  • SYS:系统内置用户,不允许登录。
  • SYSDBA:系统管理员,拥有几乎所有权限(除审计和强制访问控制)
  • SYSAUDITOR:系统审计管理员,具有审计相关权限。
  • SYSSSO:系统安全管理员,具有强制访问控制等权限;
  • SYSDBO:安全版本才有的用户,安全操作员

1.1 创建用户

数据库系统在运行的过程中,往往需要根据实际需求创建用户,然后为用户指定适当的权限。创建用户的操作一般只能由系统预设用户 SYSDBA 、SYSSSO 和 和 SYSAUDITOR 完成,如果普通用户需要创建用户,必须具有 CREATE USER 的数据库权限。

创建用户的命令是 CREATE USER, 创建用户所涉及的内容包括为用户指定用户名、认证模式、口令、口令策略、空间限制、只读属性以及资源限制。其中用户名是代表用户账号的标识符,长度为 1~128 个字符。用户名可以用双引号括起来,也可以不用,但如果用户名以数字开头,必须用双引号括起来。

语法格式:

create user XXX identified  by XXX;

使用示例:

--创建用户
create user hr identified by dameng123 password_policy 0 default tablespace tbs default index tablespace tbsidx;

密码带有特殊字符的登录处理:

达梦中密码带有特殊字符需要双引号括起来,在 linux 系统下可以使用单引号‘转义

disql hrtest/'"Dameng@123"'
--也可以使用右斜杠\转义
disql dmoa/\"Dameng@123\"

1.2 配置口令策略

用户口令最长为 48 字节,创建用户语句中的 PASSWORD Y POLICY 子句用来指定该用户的口令策略,系统支持的口令策略有:

0  无策略
1  禁止与用户名相同
2  口令长度不小于 9 
4  至少包含一个大写字母(A-Z)
8  至少包含一个数字(0-9)
16 至少包含一个标点符号(英文输入法状态下,除“和空格外的所有符号)

口令策略可单独应用,也可组合应用。组合应用时,如需要应用策略 2 和 4,则设置口令策略为 2+4=6 即可。

除了在创建用户语句中指定该用户的口令策略,隐含参数 PWD_POLICY(不在dm.ini中) 可以指定系统的默认口令策略,其参数值的设置规则与 PASSWORD POLICY 子句一致,缺省值为2。若在创建用户时没有使用 PASSWORD POLICY 子句指定用户的口令策略,则使用系统的默认口令策略。

查询系统默认口令策略:

--PWD_POLICY是隐含参数,只能通过函数或者sql语句修改
SQL> select name,type,value,sys_value,file_value from v$parameter where name='PWD_POLICY';

行号     NAME       TYPE VALUE SYS_VALUE FILE_VALUE
---------- ---------- ---- ----- --------- ----------
1          PWD_POLICY SYS  0     0         0

查询用户当前的口令策略:

SQL> select username,account_status,password_versions from dba_users;

行号     USERNAME   ACCOUNT_STATUS PASSWORD_VERSIONS
---------- ---------- -------------- -----------------
1          SYSAUDITOR OPEN           0
2          SYSSSO     OPEN           0
3          SYSDBA     OPEN           0
4          SYS        OPEN           0
--修改用户口令策略
alter user sysdba password_policy 31;
SQL> select username,account_status,password_versions from dba_users where username='SYSDBA';

行号     USERNAME ACCOUNT_STATUS PASSWORD_VERSIONS
---------- -------- -------------- -----------------
1          SYSDBA   OPEN           31

修改系统默认口令策略:

  • 方法1:通过alter system
select name,type,value from v$parameter where name='PWD_POLICY';
alter system set 'pwd_policy'=6 both;
  • 方法2:通过console工具

console为脱机工具,对参数值的修改是通过修改dm.ini文件中的参数值来进行,无论参数是静态还是动态,都需要重启DM数据库才能使新设置的参数值生效。

[dmdba@dmserver tool]$ pwd
/home/dmdba/dmdbms/tool
[dmdba@dmserver tool]$ ./console
  • 方法3:使用系统过程

使用系统过程 SP_SET_PARA_VALUE 来配置 PWD_POLICY 参数值。

SQL>  SP_SET_PARA_VALUE(1, 'PWD_POLICY',2);
DMSQL 过程已成功完成
已用时间: 2.139(毫秒). 执行号:56607.
SQL>  select name,value from v$parameter where name='PWD_POLICY';

行号     NAME       VALUE
---------- ---------- -----
1          PWD_POLICY 2

已用时间: 34.398(毫秒). 执行号:56608.

1.3 修改用户信息

使用 ALTER R USER 语句可修改用户口令 。 除口令外 , 这个语句还可以修改用户的口令策略 、 空间限制 、只读属性以及资源限制等。当然,系统固定用户的系统角色和资源限制不能被修改。

语法格式:

alter user xxx 选项

使用示例:

--用户锁定
alter user hr ACCOUNT UNLOCK;
--用户解锁
alter user hr ACCOUNT LOCK;
--修改用户的默认表空间
alter user hr DEFAULT TABLESPACE dmtbs;
--修改用户密码
alter user hr IDENTIFIED by "Dameng@123";

设置操作系统认证:

--隐含参数 enable_local_osauth
SQL> select name,type,value,sys_value,file_value from v$parameter where name='ENABLE_LOCAL_OSAUTH';

行号     NAME                TYPE      VALUE SYS_VALUE FILE_VALUE
---------- ------------------- --------- ----- --------- ----------
1          ENABLE_LOCAL_OSAUTH READ ONLY 0     0         0
--启用操作系统认证
alter system set 'ENABLE_LOCAL_OSAUTH'=1 spfile;
--创建dmdba用户组
groupadd dmdba
usermode -G dmdba dmdba
id dmdba
--重启数据库
sql> shutdown immediate;
--启动数据库
[dmdba@dmserver ~]$ DmServiceECARD start
Starting DmServiceECARD:                                   [ OK ]
[dmdba@dmserver ~]$ DmServiceECARD status
DmServiceECARD (pid 3527) is running.
--操作系统认证登录
[dmdba@dmserver ~]$ disql / as sysdba

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 3.748(ms)
disql V8
SQL> select user;

行号     USER()
---------- ------
1          SYSDBA

1.4 用户资源限制

用户资源限制设置(可以直接使用 limit 子句,也可以使用 profile 来管理用户的资源限制)

alter user hr LIMIT FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3;

DM 支持使用 profile 管理用户资源限制(新版本支持,2021 年 10 月以后的版本)

select * from DBA_PROFILES;
create profile profile1 limit FAILED_LOGIN_ATTEMPS 5, PASSWORD_LOCK_TIME 3, PASSWORD_LIFE_TIME 180;
alter user hrtest PROFILE profile1;
--查询用户使用的profile资源限制文件
select a.pid profileid, b.name profile_name, a.uid userid, c.name user_name
from SYSUSERPROFILES a, SYSOBJECTS b, SYSOBJECTS c
where a.PID = b.id and a.UID = c.ID;

1.5 删除用户

一个用户被删除后, 这个用户本身的信息,以及它所拥有的数据库对象的信息都将从数据字典中被删除。

语法格式:

DROP USER <用户名> [RESTRICT | CASCADE];

使用示例:

drop user if EXISTS hr;
drop user if EXISTS hr CASCADE;

如果在删除用户时未使用 CASCADE 选项(缺省使用 RESTRICT 选项),若该用户建立了 数据库对象, DM 将返回错误信息,而不删除此用户。

如果在删除用户时了 使用了 CASCADE 选项,除数据库中该用户及其创建的所有对象被删除外,若其他用户创建的对象引用了该用户的对象,DM 还将自动删除相应的引用完整性约束及依赖关系。

2.权限管理

2.1 用户默认权限

SQL> conn test/dameng123

服务器[LOCALHOST:5236]:处于普通打开状态
登录使用时间 : 7.961(ms)
select user;

行号     USER()
---------- ------
1          TEST
SQL> select * from session_privs;

行号     PRIVILEGE     
---------- --------------
1          CREATE SESSION
2          PUBLIC
3          SOI      --具有查询sys开头系统表的权限

2.3 授予权限

--赋予对象权限
grant select on dmhr.employee to hrtest;
--赋予系统权限
grant create table to hrtest;
grant create session to hrtest;
grant resource to hrtest;
--赋予查询对象权限,精确到列
grant select (employee_id, employee_name) on dmhr.employee to hrtest;

2.4 回收权限

--回收对象权限
revoke select on dmhr.employee from hrtest;
--回收系统权限
revoke create table from hrtest;

2.4 相关视图

select * from dba_sys_privs t where t.GRANTEE= 'HRTEST';
select * from dba_role_privs t where t.GRANTEE= 'HRTEST';
select * from dba_tab_privs t where t.GRANTEE= 'HRTEST';

3.角色管理

角色是权限的集合,角色使权限管理更加方便。

  • DBA:具有几乎所有权限(除数据库审计和强制访问控制之外),默认赋给 SYSDBA 用户。
  • PUBLIC:具有对当前模式下对象的 DML 数据操作权限。
  • RESOURCE:具有在当前模式下对象定义权限(创建表、索引、视图等);
  • SOI:具有查询 sys 开头系统表的权限;
  • VTI:具有查询 v$开头的动态视图权限(动态视图记录在 v$dynamic_tables,如果没有此权限,DM 管理工具上会报没有查询 v$视图权限)

3.1 创建角色

语法:

create role <角色名>;

使用说明:

1.创建者必须具有 CREATE ROLE 数据库权限;
2.角色名的长度不能超过128个字符;
3.角色名不允许和系统已存在的用户名重名;
4.角色名不允许是DM保留字;

查询角色:

select * from dba_roles;

3.2 删除角色

语法:

drop role <角色名>;

说明:

即使已将角色授予了其他用户,删除这个角色的操作也将成功。此时,那些之前被授予该角色的用户将不再具有这个角色所拥有的权限,除非用户通过其他途径也获得了这个角色所具有的权限。

3.3 启用与禁用角色

某些时候, 用户不愿意删除一个角色, 但是却希望这个角色失效,此时可以使用 DM 系统过程 SP_SET_ROLE
来设置这个角色为不可用,将第二参数置为0表示禁用角色。

语法格式:

-- 禁用角色
SP_SET_ROLE('角色名', 0);
-- 启用角色
SP_SET_ROLE('角色名', 1);

使用说明:

1.只有拥有ADMIN_ANY_ROLE权限的用户才能启用和禁用角色,并且设置后立即生效;
2.凡是包含禁用角色A的角色M,M中禁用的角色A将无效,但是M仍有效;
3.系统预设的角色是不能设置的,如:DBA、PUBLIC、RESOURCE。
赞(0) 打赏
未经允许不得转载:徐万新之路 » 04.达梦DCA认证课程-DM用户和权限管理

支持快讯、专题、百度收录推送、人机验证、多级分类筛选器,适用于垂直站点、科技博客、个人站,扁平化设计、简洁白色、超多功能配置、会员中心、直达链接、文章图片弹窗、自动缩略图等...

联系我们

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册