Oracle 权限相关
2015-02-06 10:13
232 查看
一、查询自己角色
只能查询自己具有的权限,不包括授予的角色,所以也就不能查询通过角色授予的权限。
SELECT * FROM dba_sys_privs WHERE grantee = 'username'; 可以查询某个user拥有哪些系统权限 (SYS用户)
SELECT * FROM user_sys_privs 可以查询自己拥有哪些系统权限
查询一个用户的所有系统权限(包含角色的系统权限) (DBA执行)
SELECT privilege FROM dba_sys_privs WHERE grantee='USERNAME'
union
SELECT privilege FROM dba_sys_privs WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee='USERNAME');
用户自己查询(用DBA执行存在重复权限的问题,例如ADMINISTER ANY SQL TUNING SET 存在于DBA和SYS里面。)
SELECT * FROM user_sys_privs
UNION
SELECT * FROM role_sys_privs;
需要使用
SELECT privilege FROM user_sys_privs
UNION
SELECT privilege FROM role_sys_privs;
二、角色管理
1、通过role来简化赋权操作,每个role含有若干项系统权限。role包括系统预定义和自定义两种。
select * from dba_roles; --查询当前所有ROLE列表,包括自定义
select * from dba_role_privs; --查询某用户的ROLE权限(DBA执行)
select * from
user_role_privs; --查询自己的ROLE权限(与dba_role_privs字段不一致)
select * from role_sys_privs; --查询当前用户的ROLE,及其所包含的系统权限
三、授权管理
1、使用GRANT语句向用户赋予系统权限:
GRANT system_privilege TO user_name [WITH ADMIN OPTION];
注:使用WITH ADMIN OPTION语句后,使用户可以将相同权限赋给其他用户。
2、使用REVOKE语句撤销系统权限:
REVOKE system_privilege FROM user_name;
注:当删除A用户的权限时,通过A赋予B的权限不会消失。
3、系统权限回收:系统权限只能由DBA用户回收
命令:SQL> Revoke connect, resource from username;
系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。
4、实体权限分类:select, update, insert, alter, index, delete, all //all包括所有权限
execute //执行存储过程权限
5. 将表的操作权限授予全体用户:
SQL> grant all on tablename to public; // public表示是所有的用户,这里的all权限不包括drop。
[实体权限数据字典]:
SQL> select owner, table_name from all_tables; // 用户可以查询的表
SQL> select table_name from user_tables; // 用户创建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表(被授权的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs; // 授出权限的表(授出的权限)
四、with admin option 和 with grant option
with admin option 用于系统权限授权,with grant option 用于对象授权。
给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke
create session from B.
with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。
只能查询自己具有的权限,不包括授予的角色,所以也就不能查询通过角色授予的权限。
SELECT * FROM dba_sys_privs WHERE grantee = 'username'; 可以查询某个user拥有哪些系统权限 (SYS用户)
SELECT * FROM user_sys_privs 可以查询自己拥有哪些系统权限
查询一个用户的所有系统权限(包含角色的系统权限) (DBA执行)
SELECT privilege FROM dba_sys_privs WHERE grantee='USERNAME'
union
SELECT privilege FROM dba_sys_privs WHERE grantee IN (SELECT granted_role FROM dba_role_privs WHERE grantee='USERNAME');
用户自己查询(用DBA执行存在重复权限的问题,例如ADMINISTER ANY SQL TUNING SET 存在于DBA和SYS里面。)
SELECT * FROM user_sys_privs
UNION
SELECT * FROM role_sys_privs;
需要使用
SELECT privilege FROM user_sys_privs
UNION
SELECT privilege FROM role_sys_privs;
二、角色管理
1、通过role来简化赋权操作,每个role含有若干项系统权限。role包括系统预定义和自定义两种。
select * from dba_roles; --查询当前所有ROLE列表,包括自定义
select * from dba_role_privs; --查询某用户的ROLE权限(DBA执行)
select * from
user_role_privs; --查询自己的ROLE权限(与dba_role_privs字段不一致)
select * from role_sys_privs; --查询当前用户的ROLE,及其所包含的系统权限
三、授权管理
1、使用GRANT语句向用户赋予系统权限:
GRANT system_privilege TO user_name [WITH ADMIN OPTION];
注:使用WITH ADMIN OPTION语句后,使用户可以将相同权限赋给其他用户。
2、使用REVOKE语句撤销系统权限:
REVOKE system_privilege FROM user_name;
注:当删除A用户的权限时,通过A赋予B的权限不会消失。
3、系统权限回收:系统权限只能由DBA用户回收
命令:SQL> Revoke connect, resource from username;
系统权限无级联,即A授予B权限,B授予C权限,如果A收回B的权限,C的权限不受影响;系统权限可以跨用户回收,即A可以直接收回C用户的权限。
4、实体权限分类:select, update, insert, alter, index, delete, all //all包括所有权限
execute //执行存储过程权限
5. 将表的操作权限授予全体用户:
SQL> grant all on tablename to public; // public表示是所有的用户,这里的all权限不包括drop。
[实体权限数据字典]:
SQL> select owner, table_name from all_tables; // 用户可以查询的表
SQL> select table_name from user_tables; // 用户创建的表
SQL> select grantor, table_schema, table_name, privilege from all_tab_privs; // 获权可以存取的表(被授权的)
SQL> select grantee, owner, table_name, privilege from user_tab_privs; // 授出权限的表(授出的权限)
四、with admin option 和 with grant option
with admin option 用于系统权限授权,with grant option 用于对象授权。
给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke
create session from B.
with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。
相关文章推荐
- 【转】oracle 权限管理相关命令
- oracle的与权限,角色相关的视图
- Oracle角色、权限、用户相关知识
- Oracle Privileges 权限相关
- Oracle用户,角色,权限相关SQL
- oracle与用户角色权限相关的视图
- Oracle角色、权限、用户相关知识
- Oracle/SQLPlus 相关操作(表空间,用户,权限,字符集等设置)
- Oracle 10g 用户权限相关语句(转)
- Oracle的用户、角色及权限相关操作
- Oracle角色、权限、用户相关知识
- 50、oracle的与权限,角色相关的视图
- Oracle 角色、权限、用户相关知识
- Oracle用户权限视图的相关信息
- Oracle 表空间 用户和权限控制相关思考
- oracle的与权限,角色相关的视图
- Oracle角色、权限、用户相关知识
- Oracle中查看用户具有哪些权限及其相关视图
- linux下Oracle 11g Grid相关文件权限备份恢复
- oracle用户、权限、数据字典等相关操作