创建用户的操作一般只能由系统预设用户SYSDBA、SYSSSO和SYSAUDITOR完成,如果普通用户需要创建用户,必须具有CREATE USER的数据库权限。
CREATE USER [IF NOT EXISTS] <用户名> IDENTIFIED <身份验证模式> [PASSWORD_POLICY <口令策略>][<锁定子句>][<存储加密密钥>][<只读标志>][<资源限制子句>][<密码过期子句>][<允 许 IP 子句>][<禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<INDEX_TABLESPACE 子句>][<表空间配额子句>]; <身份验证模式> ::= <数据库身份验证模式>|<外部身份验证模式> <数据库身份验证模式> ::= BY <口令> [<散列选项>] <散列选项> ::= HASH WITH [<密码引擎名>.]<散列算法> [<加盐选项>] <加盐选项> ::= [NO] SALT <外部身份验证模式> ::= EXTERNALLY | EXTERNALLY AS <用户 DN> <口令策略> ::= 口令策略项的任意组合 <锁定子句> ::= ACCOUNT LOCK | ACCOUNT UNLOCK <存储加密密钥> ::= ENCRYPT BY <口令> <只读标志> ::= [NOT] READ ONLY <资源限制子句> ::= DROP PROFILE | PROFILE <profile 名> | LIMIT <资源设置> <资源设置> ::= <资源设置项>{,<资源设置项>} | <资源设置项>{ <资源设置项>} <资源设置项> ::= SESSION_PER_USER <参数设置> |CONNECT_IDLE_TIME <参数设置> |CONNECT_TIME <参数设置> |CPU_PER_CALL <参数设置> |CPU_PER_SESSION <参数设置> |MEM_SPACE <参数设置> |READ_PER_CALL <参数设置> |READ_PER_SESSION <参数设置> | FAILED_LOGIN_ATTEMPTS <参数设置> |PASSWORD_LIFE_TIME <参数设置> | PASSWORD_REUSE_TIME <参数设置> |PASSWORD_REUSE_MAX <参数设置> |PASSWORD_LOCK_TIME <参数设置> |PASSWORD_GRACE_TIME <参数设置> <参数设置> ::= <参数值>| UNLIMITED| DEFAULT <密码过期子句> ::= PASSWORD EXPIRE <允许 IP 子句> ::= ALLOW_IP NULL |ALLOW_IP <IP 项>{,<IP 项>} <禁止 IP 子句> ::= NOT_ALLOW_IP NULL |NOT_ALLOW_IP <IP 项>{,<IP 项>} <IP 项> ::= <具体 IP>|<网段> <允许时间子句> ::= ALLOW_DATETIME <时间项>{,<时间项>} <禁止时间子句> ::= NOT_ALLOW_DATETIME <时间项>{,<时间项>} <时间项> ::= <具体时间段> | <规则时间段> <具体时间段> ::= <具体日期> <具体时间> TO <具体日期> <具体时间> <规则时间段> ::= <规则时间标志> <具体时间> TO <规则时间标志> <具体时间> <规则时间标志> ::= MON | TUE | WED | THURS | FRI | SAT | SUN <TABLESPACE 子句> ::= DEFAULT TABLESPACE <表空间名> <INDEX_TABLESPACE 子句> ::= DEFAULT INDEX TABLESPACE <表空间名> <表空间配额子句> ::= QUOTA UNLIMITED | QUOTA 0 | QUOTA <配额大小> ON <表空间名>{ QUOTA <配额大小> ON <表空间名>} <配额大小> ::= UNLIMITED | <空间大小>[K|M|G|T]
创建用户语句中的PASSWORD POLICY子句用来指定该用户的口令策略,系统支持的口令策略有:
PWD_POLICY为动态参数,设置后可立即生效。
SP_SET_PARA_VALUE(1, 'PWD_POLICY',8);
数据库身份验证模式需要利用数据库口令,即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证。
仅在DM安全版本中支持,使用当前操作系统的用户名登录数据库,数据库中需要存在当前操作系统的同名用户。
仅支持本机验证,需要将dm.ini中的ENABLE_LOCAL_OSAUTH设置为1(默认0),该参数为静态参数,可以使用SP_SET_PARA_VALUE设置。
-- 创建用户
create user dmdba identified by "dameng6789";
sp_set_para_value(2,'ENABLE_LOCAL_OSAUTH',1);
commit;
-- 重启数据库使参数生效
# 将dmdba加入到dmusers用户组
groupadd dmusers
usermod -G dmusers dadba
登录测试
ALTER USER <用户名> [<修改用户子句>] | [<用户代理功能子句>];
<修改用户子句> ::= [IDENTIFIED <身份验证模式>] [PASSWORD_POLICY <口令策略>] [<锁定子
句>] [<存储加密密钥>] [<只读标志>][<资源限制子句>][<密码过期子句>] [<允许 IP 子句>][<禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<INDEX_TABLESPACE 子
句>][<SCHEMA 子句>][<表空间配额子句>]
<SCHEMA 子句> ::= ON SCHEMA <模式名>
<用户代理功能子句> ::= <GRANT | REVOKE> CONNECT THROUGH <代理用户名>
DROP USER [IF EXISTS] <用户名> [RESTRICT | CASCADE];
使用CASCADE选项,可以同时删除该用户所创建的数据库对象。
角色是一组权限的组合,使用角色的目的是使权限管理更加方便,将权限组合放在一起,作为一个整体授予用户。
DM数据库中有DM预设定的角色(数据库创建之后即粗壮你在),还有用户自定义的角色。
CREATE ROLE [IF NOT EXISTS] <角色名>;
DROP ROLE [IF EXISTS] <角色名>;
-- 用户ADMIN_ANY_ROLE权限的用户可以启用、禁用角色
-- 设置为0表示禁用,设置为1表示启用
SP_SET_ROLE('BOOKSHOP_ROLE1', 0);
-- 使用grant授权用户或角色数据库权限
GRANT <特权> TO <用户或角色>{,<用户或角色>} [WITH ADMIN OPTION];
<特权> ::= <数据库权限>{,<数据库权限>};
<用户或角色>::= <用户名> | <角色名>
-- 使用REVOKE回收权限
REVOKE [ADMIN OPTION FOR]<特权> FROM <用户或角色>{,<用户或角色>} ;
<特权> ::= <数据库权限>{,<数据库权限>}
<用户或角色>::= <用户名> | <角色名>
示例如下:
GRANT <特权> ON [<对象类型>] <对象> TO <用户或角色>{,<用户或角色>} [WITH GRANT
OPTION];
<特权>::= ALL [PRIVILEGES] |
<动作> {, <动作>}
<动作>::= SELECT[(<列清单>)] |
INSERT[(<列清单>)] |
UPDATE[(<列清单>)] |
DELETE |
REFERENCES[(<列清单>)] |
EXECUTE|
READ|
WRITE|
USAGE|
INDEX|
ALTER
<列清单>::= <列名> {,<列名>}
<对象类型>::= TABLE | VIEW | PROCEDURE | PACKAGE | CLASS | TYPE | SEQUENCE |
DIRECTORY | DOMAIN | SCHEMA
<对象> ::= [<模式名>.]<对象名>|
<模式名>
<对象名> ::= <表名> | <视图名> | <存储过程/函数名> |<包名> |<类名> |<类型名> |<序列名>
| <目录名> | <域名>
<用户或角色>::= <用户名> | <角色名>
使用ALL PRIVILEGES 时,会将所有对象权限给被授与者。
示例如下:
通常角色包含权限或其他角色,通过使用GRANT语句可以将一个角色授予用户或另一角色,可以使得用户和角色继承该角色所具有的权限。
GRANT <角色名>{, <角色名>} TO <用户或角色>{,<用户或角色>} [WITH ADMIN OPTION];
<用户名或角色名> ::= <用户名> | <角色名>
REVOKE [ADMIN OPTION FOR] <角色名>{,<角色名>} FROM <角色名或用户名>;
<角色名或用户名> ::= <用户名> | <角色名>
示例如下:
更多内容可以参考:DM8安全管理.pdf
文章
阅读量
获赞