陪你听风

Oracle 数据库的系列权限命令+权限传递

电脑版发表于:2019/12/26 13:12

  今天我们继续分享关于Oracle 数据库的一些相关的命令操作。

  为了权限之间互相支配的方便,建议同时打开Oracle控制台和Developer界面进行命令操作;

  


一系列的命令如下:

创建新用户的命令

Create user 新用户名      identified by 密码;

授予用户创表的权限;

Grant create to 用户名

授予用户创建用户的权限;

Grant create user to 用户名;


假如system创建了一个新用户cz;


给用户cz授予查询自己表的权限

Grant select on scott.emp to cz with grant option;

撤销该查询权限

Revoke select on scott.emp from cz;


创建的新用户需要system授予登录的权限才可以登录;


用户的登录权限

Grant create session to 用户名;

Grant create session to 用户名 with admin option;  (系统权限)

Grant create session to 用户名 with grant option;   (对象权限)

撤销登录权限  revoke create session from 用户名;


Oracle 权限传递

权限传递的前提:

1,     自己具有该权限,

2,     权限配置的权限

With admin option(系统权限)

With grant option(对象权限)


用户cz登录后,依上操作,在cz用户下新建用户waj。

因为waj表为cz下的子表。

假设system撤销cz查询scott.emp表的权限,那么waj是否也没有了该查询权限?

         

经过撤销cz查询scott.emp表权限后,waj也不能查询

但是我们发现,当撤销cz的登录时,我们conn waj/123456  登录waj,依然可以连接。

 这个是什么原因导致的呢?

原因:在权限回收的时候,如果对象权限回收会连带取消,如果是系统权限则不会连带取消。

这里查询权限属于对象级别的,登录则属于系统级别的。


角色:

一组权限,为了方便授权DBA,CONNECT,RESOURCE  记得都要大写

dba

Resource

connect


打开sql+window

查询角色拥有的所有权限(system用户)

select * from scott.emp;

--查询所有的角色

 

--DBA,CONNECT,RESOURCE  记得都要大写

select * from dba_roles;

--查询某个角色的系统权限

select * from dba_sys_privs where grantee='DBA';

--查询某个角色的对象权限

select * from dba_tab_privs where grantee='DBA';

--查询某个角色的角色权限

select * from dba_role_privs where grantee='CONNECT';


Oracle自定义角色

创建角色

Create role 角色名;

  假设我们这里创建的角色为myrole,

system授予角色查询scott.emp 表的权限  (可控制台授权一系列命令)

Grant select on scott.emp to myrole;

授予角色myrole 的RESOURCE的权限

Grant RESOURCE to myrole;


授予cz创表的空间

Grant unlimited tablespace to cz;

撤销cz的创建表权限

Revoke create table from cz;


        Oracle授权命令

        grant 权限/角色 to 用户名/角色

        Oracle撤销命令

        revoke 权限/角色 from 权限/角色



授予myrole的dba角色权限

Grant dba to myrole;

撤销myrole 的resource和dba角色权限

revoke dba from myrole;


下面做一个测试:

system给cz授予dba角色权限  grant dba to cz;

删除用户:  drop 用户名;

cz给waj授予dba角色权限  grant dba to waj;

然后我们连接waj 删除cz用户drop user cz;

结果成功了,waj删除自己却不能成功。


结果证明:像dba这些高级权限,不要轻易授予其他用户,否则它可能反过来删除自己。

就相当于农夫与蛇的故事,最终结局还是挺悲催的。



        好啦,今天分享到这里啦。


关于TNBLOG
TNBLOG,技术分享。技术交流:群号677373950
ICP备案 :渝ICP备18016597号-1
App store Android
精彩评论
{{item.replyName}}
{{item.content}}
{{item.time}}
{{subpj.replyName}}
@{{subpj.beReplyName}}{{subpj.content}}
{{subpj.time}}
猜你喜欢