1、用户权限控制
A.创建角色并授权
1.权限控制的语法
GRANT object_priv [(columns)]
ON object
TO {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 departments
TO scott, manager;
3.让其他用户也有权,把自己的赋给他的权限进一步赋予给别人,那么需要带 WITH GRANT OPTION
GRANT select, insert
ON departments
TO scott
WITH GRANT OPTION;
4.让所有人都有相关权限,那么可以把该权限赋予给Public
GRANT select
ON alice.departments
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.权限的收回
REVOKE {privilege [, privilege...]|ALL}
ON object
FROM {user[, user...]|role|PUBLIC}
2、数据库连接的概念
Database Link,如果需要在当前数据库中访问另一个数据库中表,最简单的方法是在当前数据库中创建一个 数据库连接指向另一个数据库,然后通过@数据库连接的后缀就可以访问另一个数据库中的表了。
创建DB-LINK
通过DB-LINK 访问另一数据库中的表
CREATE PUBLIC DATABASE LINK hq.acme.com
USING 'sales';
Database link created.
SELECT *
FROM emp@HQ.ACME.COM;