您的位置:首页 > 数据库 > Oracle

oracle进阶【一】之初出茅庐—>oracle用户及权限管理实例操作

2014-07-08 20:59 676 查看
--学习oracle授权

/***********************学习oracle授权需明之begin****************************/

--oracle三类角色DBA/RESOURCE/CONNECT,具体权限可由一下SQL获知

select * from dba_sys_privs where grantee='DBA' ;--可授予数据库管理员、维护人员

select * from dba_sys_privs where grantee='RESOURCE' ;--可授予开发人员

select * from dba_sys_privs where grantee='CONNECT' ;--可授予访问人员

--查看用户权限

select * from dba_sys_privs where grantee='TESTUSER' ;

select * from dba_role_privs where grantee='TESTUSER' ;

--关于以上两个表都可以查看用户权限,到底什么区别呢?

--官方解释:

--1.DBA_ROLE_PRIVS describes the roles granted to all users and roles in the database.

--2.ROLE_SYS_PRIVS describes system privileges granted to roles. Information is provided only about roles to which the user has access.

--即dba_sys_privs描述的表详尽,如create table、select on xxTable等

--dba_role_privs描述的是用户拥有的角色

--ROLE_SYS_PRIVS描述的是某个角色到底有哪些系统权限

--关于系统权限网友总结待验证

--1. 系统权限unlimited tablespace是隐含在dba, resource角色中的一个系统权限. 当用户得到dba或resource的角色时, unlimited tablespace系统权限也隐式受权给用户.

--2. 系统权限unlimited tablespace不能被授予role, 可以被授予用户.

--3. 系统权限unlimited tablespace不会随着resource, dba被授予role而授予给用户.

/***********************学习oracle授权需明之end****************************/

/********************************部分测试SQL*********************************/

--创建一个用户testuesr1

create user testuser1 identified by testuser1 ;

--仅仅创建一个用户不进行授权时 testuser1是不能被访问和登录的

grant create session to testuser1;

--授予建表权限否则无权创建数据表

grant create table to testuser1 with admin option;--当前用户是DBA需要传递系统权限admin option

--创建一个表test1

create table test1 (id number(9),name varchar2(20));

--给testuser1用户授予创建用户的权限

grant create user to testuser1;

--testuser1用户下创建用户testuser11

create user testuser11 identified by testuesr11;

--需要给testuser11授予连接权限

grant create session to testuser11;--create session权限并没有传递给testuser1,因此不能通过testuser1给testuser11授权

--通过testuser给testuser1授予create session权限

grant create session to testuser1 ;

--testuser1创建session权限成功后

grant create session to testuser11;--此时也不能成功授权【因为testuser1没有create session的授予权限】

--testuser可以直接授权给testuser11

grant create table to testuser11;--权限传递成功

create table test2(id number(9),name varchar2 (20));

--收回testuser1的create table权限

revoke create table from testuser1;

--进入testuser11

create table test3(id number(9),name varchar2 (20));--创建成功,权限并没有收到testuser1权限回收而收回

grant select on test1 to testuser11 with grant option;--授予testuser11查询testuser1的test1表权限,并可以传递给testuser11创建的用户

select * from testuser1.test1;--查询成功
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: