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。
复制