1、用户权限控制
A.创建角色并授权
1.权限控制的语法
GRANT object_priv [(columns)]ON objectTO {user|role|PUBLIC}[WITH GRANT OPTION];
CREATE ROLE manager ;GRANT create table, create view to manager;GRANT manager to DEHAAN, KOCHHAR;
对象权限:区别于系统权限,细化到某个具体的数据库对象上的权限访问控制
各种数据库对象适合赋予的权限名称列表
| 对象权限 | Table | View | Sequence | Procedure |
|---|---|---|---|---|
| ALTER | √ | √ | ||
| DELETE | √ | √ | ||
| EXECUTE | √ | |||
| INDEX | √ | |||
| INSERT | √ | √ | ||
| REFERENCES | √ | √ | ||
| SELECT | √ | √ | √ |
2.普通的对象权限赋权
GRANT update (department_name, location_id)ON departmentsTO scott, manager;
3.让其他用户也有权,把自己的赋给他的权限进一步赋予给别人,那么需要带 WITH GRANT OPTION
GRANT select, insertON departmentsTO scottWITH GRANT OPTION;
4.让所有人都有相关权限,那么可以把该权限赋予给Public
GRANT selectON alice.departmentsTO 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.权限的收回
REVOKE {privilege [, privilege...]|ALL}ON objectFROM {user[, user...]|role|PUBLIC}
2、数据库连接的概念
Database Link,如果需要在当前数据库中访问另一个数据库中表,最简单的方法是在当前数据库中创建一个 数据库连接指向另一个数据库,然后通过@数据库连接的后缀就可以访问另一个数据库中的表了。
创建DB-LINK
通过DB-LINK 访问另一数据库中的表
CREATE PUBLIC DATABASE LINK hq.acme.comUSING 'sales';Database link created.SELECT *FROM emp@HQ.ACME.COM;
