需求描述:

1.想创建一个用户,这用户能访问其他3个用户的资源,权限是只读,这种创用户的sql怎么写?

2.怎么修改用户密码呢?

环境:

通用机

 一、创建用户并授权

1.创建业务用户步骤

step1:创建用户使用的默认表空间,

表空间可以设置路径:D:\dmdbms\data\newdb,在data下新建文件夹newdb

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";

 例子:

--创建表空间

create tablespace "TEST" datafile 'D:\dmdbms\data\newdb\TEST' size 1024 autoextend on ;

--创建用户
create user "TEST" identified by "123456" default tablespace "TEST" default index tablespace "TEST";

--分配权限

grant "PUBLIC","RESOURCE","SOI","VTI" to "TEST";

--或者直接分dab权限

grant  DBA  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 新密码;

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐