Oracle数据库(十三)—— 控制用户权限

 

(一)权限

数据库安全性:

  • 系统安全性
  • 数据安全性

系统权限: 对于数据库的权限

对象权限: 操作数据库对象的权限

 

系统权限

超过一百多种有效的权限

数据库管理员(DBA)具有高级权限以完成管理任务,例如:

  • 创建新用户
  • 删除用户
  • 删除表
  • 备份表

 

(二)用户

1、创建用户

Oracle登录用户为system用户,system用户是一个DBA

 

DBA使用CREATE USER语句创建用户

CREATE USER user

IDENTIFIED BY password;

 

 

使用atguigu用户登录

缺少CREATE SESSION权限,无法登录,在下面会对其赋予权限

 

2、用户的系统权限

用户创建之后, DBA 会赋予用户一些系统权限

GRANT privilege [, privilege...]

TO user [, user | role, PUBLIC...];

以应用程序开发者为例, 一般具有下列系统权限:

  • CREATE SESSION(创建会话)
  • CREATE TABLE(创建表)
  • CREATE SEQUENCE(创建序列)
  • CREATE VIEW(创建视图)
  • CREATE PROCEDURE(创建过程)

 

-- 授予atguigu用户CREATE SESSION权限

再次登录atguigu用户,登录成功

在atguigu用户中创建表

在system用户中给atguigu赋予创表权限

再次在atguigu用户中创建表

 

3、创建用户表空间

用户拥有create table权限之外,还需要分配相应的表空间才可开辟存储空间用于创建的表

-- 为atguigu用户创建一个不限额的表空间

 -- 为atguigu用户创建一个5M的表空间

 

4、修改密码

用户可以修改自己的密码

 

(三)角色

 

 创建角色并赋予权限

创建角色

给角色赋予权限

将角色赋予用户

 

(四)对象

1、对象权限

  • 不同的对象具有不同的对象权限
  • 对象的拥有者拥有所有权限
  • 对象的拥有者可以向外分配权限

2、分配对象权限

GRANT object_priv [(columns)]

ON object

TO {user|role|PUBLIC}

[WITH GRANT OPTION];

 

-- 将employees的select,update权限授予atguigu用户

 

在atguigu用户中查询employees表

 

3、WITH GRANT OPTION和PUBLIC关键字

WITH GRANT OPTION 使用户同样具有分配权限的权利

在system用户下完成以下命令

在atguigu用户中可以将此权限授予其他用户

 

PUBLIC向数据库中所有用户分配权限

在system用户下完成以下命令

则这个数据库中的用户都具有这两个权限

 

4、查询权限分配情况

-- 查询用户拥有的关于表对象权限

 

5、收回对象权限

  • 使用 REVOKE 语句收回权限
  • 使用 WITH GRANT OPTION 子句所分配的权限同样被收回

REVOKE {privilege [, privilege...]|ALL}

ON object FROM {user[, user...]|role|PUBLIC}

[CASCADE CONSTRAINTS];

 

-- 收回atguigu对于employees表的select权限

 

 

(五)总结

使用 DCL 控制数据库权限, 创建数据库联接:

 

posted @ 2018-08-06 10:34  秋风de领域  阅读(3048)  评论(0编辑  收藏  举报