oracle -权限相关的查询与赋予

本文详细介绍Oracle数据库中用户、角色及权限的查询方法,包括查看所有用户、角色、权限分配情况等,帮助理解Oracle的安全管理机制。
部署运行你感兴趣的模型镜像

一、查看用户


1.查看所有用户:
select * from dba_users;
select * from all_users;
select * from user_users;    //查看当前用户


二、查看角色

1.当前用户被激活的全部角色
  select * from session_roles;
 

2.当前当前用户被授予的角色
  select * from user_role_privs;
 

3.全部用户被授予的角色
  select * from dba_role_privs;
 

4、查看某个用户所拥有的角色

select * from dba_role_privs where grantee='用户名';

 

5、查看某个角色所拥有的权限

select * from dba_sys_privs where grantee='CONNECT';

 

6.查看所有角色
  select * from dba_roles;



三、查看权限

1.基本权限查询:
select * from session_privs; --当前用户所拥有的全部权限
select * from user_sys_privs;--当前用户的系统权限
select * from user_tab_privs;--当前用户的对象权限
select * from dba_sys_privs ;--查询某个用户所拥有的系统权限
select * from role_sys_privs;--查看角色(只能查看登陆用户拥有的角色)所包含的权限
 

2. 查看用户的系统权限(直接赋值给用户或角色的系统权限)

select * from dba_sys_privs;

select * from user_sys_privs;


2.查看用户的对象权限:
 select * from dba_tab_privs;
 select * from all_tab_privs;
 select * from user_tab_privs;


3.查看哪些用户有sysdbasysoper系统权限(查询时需要相应权限)
  select * from v$pwfile_users; 

扩展

1、以下语句可以查看Oracle提供的系统权限
select name from sys.system_privilege_map

2、查看一个用户的所有系统权限(包含角色的系统权限)
select privilege from dba_sys_privs where grantee='SCOTT'  
union  
select privilege from dba_sys_privs where grantee in (select granted_role from dba_role_privs where grantee='SCOTT' ); 

 

3 查询当前用户可以访问的所有数据字典视图。 
select * from dict where comments like '%grant%';   
 

4、显示当前数据库的全称
select * from global_name;   

 

问题 1:如何查询一个角色包括的权限?   
a.一个角色包含的系统权限   
         select * from dba_sys_privs where grantee='角色名'  

         select * from dba_sya_privs where grantee='COONNECT'; connect要大写
         另外也可以这样查看:   
         select * from role_sys_privs where role='角色名'   
b.一个角色包含的对象权限   
         select * from dba_tab_privs where grantee='角色名'   
 

问题 2Oracle究竟有多少种角色?   
select * from dba_roles;   
 

问题 3:如何查看某个用户,具有什么样的角色?   
select * from dba_role_privs where grantee='用户名'  

 

问题4:查看哪些用户具有DBA的角色

select grantee from dba_role_privs where granted_role='DBA';

补:

问题5:为用户添加表格的权限

grant select,insert,update,delete,all on 表名 to 用户名

 

 

 

转载链接:http://blog.itpub.net/31015730/viewspace-2150322/

您可能感兴趣的与本文相关的镜像

Langchain-Chatchat

Langchain-Chatchat

AI应用
Langchain

Langchain-Chatchat 是一个基于 ChatGLM 等大语言模型和 Langchain 应用框架实现的开源项目,旨在构建一个可以离线部署的本地知识库问答系统。它通过检索增强生成 (RAG) 的方法,让用户能够以自然语言与本地文件、数据库或搜索引擎进行交互,并支持多种大模型和向量数据库的集成,以及提供 WebUI 和 API 服务

<think>我们正在回答用户的问题:Oracle中如何授予、回收和查询用户权限 根据引用内容,我们可以将权限分为系统权限和对象权限,并分别讨论授予、回收和查询操作。 同时注意引用中提到的特殊选项:with admin option(系统权限)和with grant option(对象权限,但引用中未直接提及,但根据Oracle知识,对象权限使用with grant option) 步骤: 1. 系统权限的授予回收 2. 对象权限的授予回收 3. 权限查询 引用说明: 引用[1]:提到了系统权限的授予,使用with admin option参数,以及对象权限的授予和回收。 引用[2]:展示了创建用户和授予系统权限(包括unlimited tablespace)以及回收权限的例子。 引用[3]:详细说明了with admin option的作用:授予权限时可传递,回收时不会级联回收。 引用[4]:虽然讲的是MySQL,但用户问题明确是Oracle,所以仅参考其格式。 注意:用户问题明确要求参考站内引用,因此我们主要依据引用[1][2][3]的内容。 回答结构: 一、系统权限的授予回收 二、对象权限的授予回收 三、权限查询(包括系统权限和对象权限) 另外,根据用户上一次的问题(关于表空间写入权限),我们可以推测用户权限管理有持续兴趣,因此相关问题可以围绕权限管理展开。</think>### Oracle权限管理:授予、回收查询Oracle中,权限管理分为**系统权限**(全局操作)和**对象权限**(特定对象操作),以下是详细操作指南: --- #### 一、系统权限管理 **1. 授予系统权限** ```sql GRANT <privilege_list> TO <user_or_role> [WITH ADMIN OPTION]; ``` - **示例**:授予用户创建会话、表和无限表空间权限 ```sql GRANT CREATE SESSION, CREATE TABLE, UNLIMITED TABLESPACE TO SHENJI202507; ``` - `WITH ADMIN OPTION`:允许被授权者将此权限转授他人[^1][^3] **2. 回收系统权限** ```sql REVOKE <privilege_list> FROM <user_or_role>; ``` - **示例**:回收创建会话权限 ```sql REVOKE CREATE SESSION FROM SHENJI202507; ``` - **关键特性**:回收权限时**不会级联回收**被转授的权限(若原授权含 `WITH ADMIN OPTION`)[^3] --- #### 二、对象权限管理 **1. 授予对象权限** ```sql GRANT <privilege_list> ON <schema.object> TO <user_or_role> [WITH GRANT OPTION]; ``` - **示例**:授予用户对 `EMP` 表的查询、插入权限 ```sql GRANT SELECT, INSERT ON HR.EMP TO SHENJI202507; ``` - `WITH GRANT OPTION`:允许被授权者转授此对象权限 **2. 回收对象权限** ```sql REVOKE <privilege_list> ON <schema.object> FROM <user_or_role>; ``` - **示例**:回收 `EMP` 表的插入权限 ```sql REVOKE INSERT ON HR.EMP FROM SHENJI202507; ``` - **关键特性**:回收时会**级联回收**被转授的权限(若原授权含 `WITH GRANT OPTION`) --- #### 三、权限查询方法 **1. 查询系统权限** ```sql SELECT * FROM DBA_SYS_PRIVS WHERE GRANTEE = 'SHENJI202507'; ``` - 结果包含 `ADMIN_OPTION` 字段(值为 `YES` 表示含 `WITH ADMIN OPTION`) **2. 查询对象权限** ```sql SELECT * FROM DBA_TAB_PRIVS WHERE GRANTEE = 'SHENJI202507'; ``` - 显示用户对表、视图等对象的权限及 `GRANTABLE` 字段(值为 `YES` 表示含 `WITH GRANT OPTION`) **3. 查询角色权限** ```sql SELECT * FROM DBA_ROLE_PRIVS WHERE GRANTEE = 'SHENJI202507'; ``` > **注意**:执行查询需 `DBA` 权限或 `SELECT_CATALOG_ROLE` 角色[^2]。 --- ### 权限管理原则 1. **最小权限原则**:仅授予必要权限,避免滥用 `UNLIMITED TABLESPACE` 等高风险权限[^2] 2. **职责分离**:通过角色(Role)集中管理权限组,而非直接授权用户 3. **定期审计**:使用 `DBA_SYS_PRIVS` 和 `DBA_TAB_PRIVS` 视图监控权限分配
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值