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';

posted on 2022-11-11 11:44  兔哥DB  阅读(122)  评论(0编辑  收藏  举报

导航