Oracle创建用户授权并回收
背景:现在mdip用户下有几个视图,要创建一个用户ejfz/Zdwy#2020,并授权,然后回收权限,目的是给别人一个账号只能查询几个视图。
一、创建用户
create user ejfz identified by Zdwy#2020;
二、授权
1、 授权用户角色
oracle提供三种标准角色(role):connect/resource和dba.
1.1connect role(连接角色)
临时用户,特指不需要建表的用户,通常只赋予他们connect role.
connect是使用oracle简单权限,这种权限只对其他用户的表有访问权限,包括select/insert/update和delete等。
拥有connect role 的用户还能够创建表、视图、序列(sequence)、簇(cluster)、同义词(synonym)、回话(session)和其他 数据的链(link)。
1.2resource role(资源角色)
更可靠和正式的数据库用户可以授予resource role。
resource提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器(trigger)、索引(index)和簇(cluster)。
1.3dba role(数据库管理员角色)
dba role拥有所有的系统权限
包括无限制的空间限额和给其他用户授予各种权限的能力。
例如:grant connect,resource,dba to ejfz;
2、授权查询表或视图权限
grant select on mdip.t_ss_appointment to ejfz;
grant select on mdip.view_exam_req to ejfz;
grant select on mdip.t_bs_check_addr to ejfz;
3、授权创建视图权限
grant create view to ejfz;
三、回收权限
1、回收用户角色
REVOKE RESOURCE,dba FROM ejfz;
2、回收用户对象权限
REVOKE SELECT ON mdip.queue_type FROM ejfz;
REVOKE SELECT ON mdip.patient_Info FROM ejfz;
REVOKE SELECT ON mdip.queue FROM ejfz;
REVOKE create view from ejfz;
三、查询
1、查询当前用户被授予的角色
SELECT * FROM USER_ROLE_PRIVS;
2、查询当前用户的对象权限
SELECT * FROM USER_TAB_PRIVS;
3、查询当前用户的系统权限
select * from user_sys_privs;
四、查询所有的权限命令
DBA_* 描述的是数据库中的所有对象
ALL_* 描述的是当前用户有访问权限的所有对象
USER_* 描述的是当前用户所拥有的所有对象
1、查看所有用户:
select * from dba_users; —>显示所有用户的详细信息
select * from all_users; —>显示用户及用户id和创建用户时间三个字段
select * from user_users; —>显示当前用户的详细信息。
2、查看当前用户:
select * from v$session; —>查看所有连接信息
3、查看角色:
select * from user_role_privs; —>当前用户被授予的角色
select * from dba_role_privs; —>全部用户被授予的角色
select * from dba_roles; —>查看所有角色
Select * from ROLE_ROLE_PRIVS; —>查看所有角色被赋予的角色
4、基本权限查询:
select * from session_privs; —>当前用户所拥有的全部权限
select * from user_sys_privs; —>当前用户的系统权限
select * from user_tab_privs; —>当前用户的表级权限
select * from dba_sys_privs; —>所有用户的拥有的权限,可查询某个用户所拥有的系统权限
select * from role_sys_privs; —>查看角色(只能查看登陆用户拥有的角色)所包含的权限
5、查看用户对象权限:
select * from dba_tab_privs; —>查看所有用户的对象权限
select * from all_tab_privs; —>查看当前用户的所拥有对象
select * from user_tab_privs; —>查看当前用户的对象权限
select * from V$PWFILE_USERS; —>查看当前用户有sysdba或sysoper系统权限(查询时需要相应权限)
6、查看一个用户的所有权限包含其角色的权限:
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’ );