注册
DM8创建用户相关
技术分享/ 文章详情 /

DM8创建用户相关

🌸🌸🌸 2023/12/22 2423 0 0

如何创建用户

创建用户的操作一般只能由系统预设用户SYSDBA、SYSSSO和SYSAUDITOR完成,如果普通用户需要创建用户,必须具有CREATE USER的数据库权限。

1.创建用户

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]

2.口令策略

创建用户语句中的PASSWORD POLICY子句用来指定该用户的口令策略,系统支持的口令策略有:

  • 0,无限制,但总长度不得超过48个字节
  • 1,禁止与用户名相同
  • 2,口令长度需大于等于INI参数PWD_MIN_LEN设置的值(缺省)
  • 4,至少包含一个大写字母
  • 8,至少包含一个数字
  • 16,至少包含一个标点符号(英文输入法状态下,除"和空格外的所有符号)
    口令策略可以组合使用,例:使用2和4,设置为2+4=6即可。

PWD_POLICY为动态参数,设置后可立即生效。

SP_SET_PARA_VALUE(1, 'PWD_POLICY',8);

3.用户身份验证模式

3.1 数据库身份验证模式

数据库身份验证模式需要利用数据库口令,即在创建或修改用户时指定用户口令,用户在登录时输入对应口令进行身份验证。

3.2 基于操作系统的身份验证模式

仅在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

登录测试
image.png

4.修改用户信息

ALTER USER <用户名> [<修改用户子句>] | [<用户代理功能子句>]; <修改用户子句> ::= [IDENTIFIED <身份验证模式>] [PASSWORD_POLICY <口令策略>] [<锁定子 句>] [<存储加密密钥>] [<只读标志>][<资源限制子句>][<密码过期子句>] [<允许 IP 子句>][<禁止 IP 子句>][<允许时间子句>][<禁止时间子句>][<TABLESPACE 子句>][<INDEX_TABLESPACE 子 句>][<SCHEMA 子句>][<表空间配额子句>] <SCHEMA 子句> ::= ON SCHEMA <模式名> <用户代理功能子句> ::= <GRANT | REVOKE> CONNECT THROUGH <代理用户名>

5.删除用户

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

使用CASCADE选项,可以同时删除该用户所创建的数据库对象。

6.DM角色管理

角色是一组权限的组合,使用角色的目的是使权限管理更加方便,将权限组合放在一起,作为一个整体授予用户。

6.1 创建角色

DM数据库中有DM预设定的角色(数据库创建之后即粗壮你在),还有用户自定义的角色。

CREATE ROLE [IF NOT EXISTS] <角色名>;

6.2 删除角色

DROP ROLE [IF EXISTS] <角色名>;

6.3 角色的启用与禁用

-- 用户ADMIN_ANY_ROLE权限的用户可以启用、禁用角色 -- 设置为0表示禁用,设置为1表示启用 SP_SET_ROLE('BOOKSHOP_ROLE1', 0);

7. 权限的分配与回收

7.1 数据库权限

-- 使用grant授权用户或角色数据库权限 GRANT <特权> TO <用户或角色>{,<用户或角色>} [WITH ADMIN OPTION]; <特权> ::= <数据库权限>{,<数据库权限>}; <用户或角色>::= <用户名> | <角色名> -- 使用REVOKE回收权限 REVOKE [ADMIN OPTION FOR]<特权> FROM <用户或角色>{,<用户或角色>} ; <特权> ::= <数据库权限>{,<数据库权限>} <用户或角色>::= <用户名> | <角色名>

示例如下:
image.png

7.2 对象权限

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 时,会将所有对象权限给被授与者。
示例如下:
image.png

7.3 角色权限

通常角色包含权限或其他角色,通过使用GRANT语句可以将一个角色授予用户或另一角色,可以使得用户和角色继承该角色所具有的权限。

GRANT <角色名>{, <角色名>} TO <用户或角色>{,<用户或角色>} [WITH ADMIN OPTION]; <用户名或角色名> ::= <用户名> | <角色名> REVOKE [ADMIN OPTION FOR] <角色名>{,<角色名>} FROM <角色名或用户名>; <角色名或用户名> ::= <用户名> | <角色名>

示例如下:
image.png

更多内容可以参考:DM8安全管理.pdf

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服