OCP学习之用户与权限管理
1、系统权限与对象权限
系统权限:获得访问数据库的权限,并且执行特定DDL操作
对象权限:处理数据库对象的权限,SELECT 、INSERT 、UPDATE
2、系统权限 (SYS用户不需要授权就具有以下权限)
CREATE USER :
DROP USER:
DROP ANY TABLE:
BACKUP ANY TABLE
SELECT ANY TABLE
CREATE ANY TABLE
3、用户系统权限管理
创建用户sim之后,是不能直接登录的,因为连登录的权限都没有
SQL> grant create session to sim;
同理还有创建其他的权限
grant create table/view/sequence/procedure
不需要一个一个地授权,可以写在一行上
SQL> grant create table,create view,create sequence,create procedure to sim;
4、对象权限
对象权限是能对特定的表,视图、序列等对象执行操作的权限和能力,每个对象都有一组可以授权的权限。
对象权限特点:
1)对象权限根据对象的不同而变化(不经授权sim用户不能访问hr用户的表)
2)对象的所有者对其具有所有的权限(hr用户不用授权就可以管理 hr. 下面的所有对象)
3)所有者可以将属于他的对象授予其他用户
5、授权对象权限
1)授予sim用户对employees表的查询权限(否则会报 [表或视图不存在] 的错误)
SQL> conn hr/hr
Connected.
SQL> grant select on hr.employees to sim;
Grant succeeded.
2)授权DML权限,并且指定具体列名(若使用hr用户登录可以不加hr. 的前缀 ,sys用户需要加)
SQL> grant update(email,phone_number) on employees to sim;
Grant succeeded.
6、撤销系统权限与对象权限
1)收回sim用户的创建表的系统权限(使用sys用户登录)
SQL> revoke create table from sim;
Revoke succeeded.
注意:是REVOKE ... FROM ,不是 TO
2)收回sim用户对 employees表的查询权限
SQL> revoke select on employees from sim;
Revoke succeeded.
这时候sim用户再查询 employees表就会报【权限不足】的报错,之前是【表或视图不存在】
3)前面不是授权了update的权限吗?收回select后还可以update吗?
不能,报【权限不足】,可以推测出select是最基础的权限
7、WITH GRANT OPTION 与 WITH ADMIN OPTION
WITH GRANT OPTION : 使用revoke收回权限后,其他用户被授权的会被级联收回
WITH ADMIN OPTION : 不会级联收回
8、角色(role) 管理
直接授权不同的权限方法很安全,但是有两个问题:
1)工作量大:需要很多的授权语句,如果新增了一个用户,岂不是要又要执行很多grant 语句?
2)无法使权限在某些环境中处于活动状态(看不太懂)
9、创建角色
1)创建一个hr_leader角色,作为hr部门的领导,可以访问到所有的表(sys用户登录)
SQL> create role hr_leader;
Role created.
2)授权角色
grant create session to hr_leader;
GRANT SELECT ON HR.REGIONS to hr_leader;
GRANT SELECT ON HR.COUNTRIES to hr_leader;
GRANT SELECT ON HR.LOCATIONS to hr_leader;
GRANT SELECT ON HR.DEPARTMENTS to hr_leader;
GRANT SELECT ON HR.JOBS to hr_leader;
GRANT SELECT ON HR.EMPLOYEES to hr_leader;
GRANT SELECT ON HR.JOB_HISTORY to hr_leader;
3)授权给该角色给一个用户
SQL> grant hr_leader to sim;
Grant succeeded.
10、预定义的角色
CONNECT : 12c仅有create session 权限
RESOURCE :此角色可以创建数据库对象和过程对象
DBA : 拥有大多数系统权限,以及多个对象权限和角色,任何被授予DBA角色的用户可以管理数据库的大多数方面(启动和关闭数据库除外)
SELECT_CATALOG_ROLE : 拥有针对数据库字典中大多的对象权限,但是没有系统权限和针对用户数据的权限。针对监视数据库并报告数据库情况,但看不到用户数据
SCHEDUILER_ADMIN : 拥有管理调度作业的系统权限
PUBLIC : 这是一个特殊的角色,每一个用户都具有这个角色
如果将某个权限授予PUBLIC,该权限将作用于所有的数据库用户,如:
grant select on hr.employees to public;
11、表空间授权
1)授权配额
如果没有授权,就会报错:ORA-01950: 对表空间 XXX 无权限
SQL> alter user sim quota unlimited on users;
User altered.
99、
1)查看系统权限授权情况(sys用户登录)
SQL> select grantee,privilege from dba_sys_privs where grantee='SIM';
GRA PRIVILEGE
--- ----------------------------------------
SIM CREATE TABLE
SIM CREATE VIEW
SIM CREATE PROCEDURE
SIM CREATE SESSION
SIM CREATE SEQUENCE
2)查看对象权限授权(普通用户登录)
select GRANTEE,OWNER,TABLE_NAME,PRIVILEGE from user_tab_privs WHERE grantee='SIM';