Oracle 用户权限

1、用户权限控制

A.创建角色并授权

1.权限控制的语法

  1. GRANT object_priv [(columns)]
  2. ON object
  3. TO {user|role|PUBLIC}
  4. [WITH GRANT OPTION];
  1. CREATE ROLE manager ;
  2. GRANT create table, create view to manager;
  3. GRANT manager to DEHAAN, KOCHHAR;

对象权限:区别于系统权限,细化到某个具体的数据库对象上的权限访问控制
各种数据库对象适合赋予的权限名称列表

对象权限 Table View Sequence Procedure
ALTER
DELETE
EXECUTE
INDEX
INSERT
REFERENCES
SELECT

2.普通的对象权限赋权

  1. GRANT update (department_name, location_id)
  2. ON departments
  3. TO scott, manager;

3.让其他用户也有权,把自己的赋给他的权限进一步赋予给别人,那么需要带 WITH GRANT OPTION

  1. GRANT select, insert
  2. ON departments
  3. TO scott
  4. WITH GRANT OPTION;

4.让所有人都有相关权限,那么可以把该权限赋予给Public

  1. GRANT select
  2. ON alice.departments
  3. TO PUBLIC;

B.通过数据字典查询系统中的赋权情况

数据字典视图 描述
ROLE_SYS_PRIVS 角色对应的系统权限
ROLE_TAB_PRIVS 角色对应的表权限
USER_ROLE_PRIVS 用户的角色分配表
USER_TAB_PRIVS_MADE 用户对象上赋权者与被赋者的历史赋权情况
USER_TAB_PRIVS_RECD 用户对象上拥有者与被赋者的历史赋权情况
USER_COL_PRIVS_MADE 用户对象列上赋权者与被赋者的历史赋权情况
USER_COL_PRIVS_RECD 用户对象列上拥有者与被赋者的历史赋权情况
USER_SYS_PRIVS 用户的系统权限

C.权限的收回

  1. REVOKE {privilege [, privilege...]|ALL}
  2. ON object
  3. FROM {user[, user...]|role|PUBLIC}

2、数据库连接的概念

Database Link,如果需要在当前数据库中访问另一个数据库中表,最简单的方法是在当前数据库中创建一个 数据库连接指向另一个数据库,然后通过@数据库连接的后缀就可以访问另一个数据库中的表了。
image.png

创建DB-LINK

通过DB-LINK 访问另一数据库中的表

  1. CREATE PUBLIC DATABASE LINK hq.acme.com
  2. USING 'sales';
  3. Database link created.
  4. SELECT *
  5. FROM emp@HQ.ACME.COM;