需求描述:
1.想创建一个用户,这用户能访问其他3个用户的资源,权限是只读,这种创用户的sql怎么写?
2.怎么修改用户密码呢?
环境:
通用机
一、创建用户并授权
1.创建业务用户步骤
step1:创建用户使用的默认表空间
create tablespace "TBS_TEST" datafile 'TEST.DBF' size 1024 autoextend on ;
step2:创建用户并指定默认使用的表空间
create user "TEST" identified by "TEST@2023" default tablespace "TBS_TEST" default index tablespace "TBS_TEST";
step3:授予用户除了DBA外的所有角色
grant "PUBLIC","RESOURCE","SOI","VTI" to "TEST";
2.创建只读用户
step1:创建用户使用的默认表空间
create tablespace "TBS_READONLY_USER" datafile 'READONLY_USER.DBF' size 1024 autoextend on ;
step2:创建用户并指定默认使用的表空间
create user "READONLY_USER" identified by "TEST@2023" default tablespace "TBS_READONLY_USER" default index tablespace "TBS_READONLY_USER";
step3:授予用户只读权限
grant SELECT TABLE ,SELECT ANY TABLE ,SELECT VIEW ,SELECT ANY VIEW ,SELECT SEQUENCE ,SELECT ANY SEQUENCE ,SELECT ANY DICTIONARY ,SELECT MATERIALIZED VIEW ,SELECT ANY MATERIALIZED VIEW to "READONLY_USER";
3.授予用户指定模式的只读权限
step1:创建用户使用的默认表空间
create tablespace "TBS_TEST" datafile 'TEST.DBF' size 1024 autoextend on ;
step2:创建用户并指定默认使用的表空间
create user "TEST" identified by "TEST@2023" default tablespace "TBS_TEST" default index tablespace "TBS_TEST";
step3:授予用户指定模式的只读权限
DECLARE SQLSTMT STRING; CURSOR CUR FOR SELECT ID,NAME FROM SYSOBJECTS WHERE TYPE$ = 'SCHOBJ' AND SUBTYPE$ IN ('STAB','UTAB') AND (PID=-1 OR PID=0) AND SCHID=(SELECT ID FROM SYSOBJECTS WHERE TYPE$='SCH' AND NAME='模式名' ); TYPE MYREC IS CUR%ROWTYPE; REC_V MYREC; BEGIN FOR REC_V IN CUR LOOP SQLSTMT = 'grant SELECT ON "模式名"."'|| REC_V.NAME || '" TO "TEST";'; EXECUTE IMMEDIATE SQLSTMT; END LOOP; COMMIT; END;
注:GZAMR_SJJH 替换为指定模式即可。
角色的理解:
DBA:DM数据库系统中对象与数据操作的最高权限集合,拥有构建数据库的全部特权,只有DBA才可以创建数据库结构。
RESOURCE:可以创建数据库对象,对有权限的对象进行数据操纵,不可以创建数据库结构。
PUBLIC:不可以创建数据库对象,只能对有权限的数据库对象进行操纵。
VTI:角色具有系统动态视图查询权限。
SOI:角色具有系统表(SYS开头的表)的查询权限。
二.修改用户密码
alter user 用户名 identified by 新密码;
~~~~~~~~~~~~~~~分享完毕~~~~~~~~~~~~~~~~
更多内容,请访问达梦社区地址:https:eco.dameng.com