首页 > 代码库 > Oracle DCL(Data Control Language)数据控制语言(权限privilege,角色role,用户user介绍)
Oracle DCL(Data Control Language)数据控制语言(权限privilege,角色role,用户user介绍)
1、如何控制用户访问
1、身份验证,认证:Authentication
2、授权:Authorization
3、审计:Audit
2、权限
- 数据库安全:
- -系统安全
- -数据安全
- 系统权限:数据库中执行一个特定操作
- 对象权限:操纵数据库的对象的内容
- 可用的系统权限有100多个
- 数据库管理员有高层次的系统权限,可以完成
- -创建一个新用户
- -删除用户
- -删除表
- -备份表
3、创建用户
DBA使用CREATE USER语句创建用户
CREATE USER user identified BY password;
SQL> create user wendy identified by wendy;
User created. |
4、用户被创建后,DBA可以对用户授予特殊的系统权限.
一个应用程序开发者,可能有如下系统权限:
- CREATE SESSION
- CREATE TABLE
- CREATE SEQUENCE
- CREATE VIEW
- CREATE PROCEDURE
用户被创建后,DBA可以对那个用户授予特殊的系统权限.
GRANT privilege [, privilege…]
To user [, user| role, PUBLIC…];
授予系统权限
DBA能授予某系统权限给用户
SQL> GRANT create session,create table,create sequence,create view to wendy;
Grant succeeded. |
5、什么是角色Role?
- 数据库系统是role-base基于角色的系统.
- 角色是权限的集合.
- 操作系统中是基于组的系统,操作系统是用户组group.
- 组是用户的集合.
- 可以将权限赋予一个用户,也可以将角色赋予一个用户.
- 创建一个角色;
CREATE ROLE manager;
- 赋予给角色一个权限;
GRANT create table, create view To manager;
- 赋予一个角色给用户;
GRANT manager To wendy, gaga;
SQL> create role manager;
Role created.
SQL> grant create table,create view to manager;
Grant succeeded.
SQL> grant manager to wendy;
Grant succeeded. |
6、修改你的密码
DBA创建你的用户帐号和初始化你的密码
你能使用ALTER USER语句改变密码
ALTER USER wendy IDENTIFIED BY wendypassword; |
7、什么是对象,什么是对象权限?
TABLE,VIEW,Sequence 等为对象,在对象上的权限为对象权限,这个权限不是全局的.系统权限是全局的.
每种对象的权限都不同
对象宿主拥有在对象上全部的权限
对象宿主能授予对象权限给其他用户.
GRANT object_priv[(columns)] ON object TO {user|role|PUBLIC} [WITH GRANT OPTION]; |
赋予对象权限
在t表中赋予查询特权:
GRANT select
ON t
TO wendy;
赋予更新某列的特权给用户和角色:
GRANT update(id,name)
ON t
TO wendy,manager;
SQL> grant select 2 on t 3 to wendy;
Grant succeeded.
SQL> grant update(id,name) 2 on t 3 to wendy,manager;
Grant succeeded. |
8、传递特权
授予用户给其他用户权限的权限:
GRANT select,insert
ON t
TO wendy
WITH GRANT OPTION;
SQL> grant select,insert 2 on t 3 to wendy 4 with grant option;
Grant succeeded. |
允许系统上的所有用户从wendy的t表中查询数据:
GRANT select
ON wendy.t
TO PUBLIC;
SQL> grant select 2 on wendy.t 3 to public;
Grant succeeded. ------------注意:wendy.t是指wendy用户下的t表,所以一定要保证这个用户下有这张表 |
9、检查赋予的特权
数据字典视图 | 描述 |
ROLE_SYS_PRIVS | 授予角色的系统权限 |
ROLE_TAB_PRIVS | 授予角色的表权限 |
USER_ROLE_PRIVS | 授予用户的角色 |
USER_SYS_PRIVS | 授予用户的系统权限 |
USER_TAB_PRIVS_MADE | 用户对象上授予的权限 |
USER_TAB_PRIVS_RECD | 授予用户的对象权限 |
USER_COL_PRIVS_MADE | 用户某列上授予的对象权限 |
USER_COL_PRIVS_RECD | 授予用户某列上的对象权限 |
10、撤销对象权限
使用revoke语句来撤销曾赋予给用户的权限
通过WITH GRANT OPTION子句被传递给其他用户的权限也被撤销
Revoke{privilege [, privilege…]| ALL}
ON object
FROM {user[,user…] | role| PUBLIC}
[CASCADE constraints];
CASCADE表示把他下面依赖的权限都撤销.
在wendy的表中,撤销SELECT和INSERT权限
REVOKE select,insert
ON t
FROM wendy;
11、总结
语句 | 解释 |
Create user | Creates a user(usually performed by a DBA) |
Grant | Gives other users privileges to access the objects |
Create role | Creates a collection of privileges, usually performed by a DBA |
Alter user | Changes a user‘s password |
Revoke | Removes privileges on an object from users |
Oracle DCL(Data Control Language)数据控制语言(权限privilege,角色role,用户user介绍)