IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> 【数据库系统概论】第四、五章:数据库安全性、完整性 -> 正文阅读

[大数据]【数据库系统概论】第四、五章:数据库安全性、完整性

视频
参考资料
内容来自参考链接和视频。

第四章:数据库安全性

安全性概述

不安全因素:

  1. 非授权用户对数据库的恶意存取和破坏
  2. 数据库中重要的数据泄露
  3. 安全环境的脆弱性

安全性控制

  1. 用户身份鉴别:(静态口令、动态口令、生物特征、智能卡 鉴别)
  2. 存取控制
  3. 自主存取控制方法
  4. 授权:授予与收回

授权语句:GRANT
格式:

       GRANT <权限>[,<权限>]... 
       [ON <对象类型> <对象名>]
       TO <用户>[,<用户>]...
       [WITH GRANT OPTION];

语义:将对指定操作对象的指定操作权限授予指定的用户

发出GRANT:

  • DBA
  • 数据库对象创建者(即属主Owner)
  • 拥有该权限的用户

按受权限的用户:

  • 一个或多个具体用户
  • PUBLIC(全体用户)

WITH GRANT OPTION子句:

  • 指定:可以再授予
  • 没有指定:不能传播

不允许循环授权:

在这里插入图片描述
以上图来自参考链接。
例1:把查询Student表的权限授权给用户U1.

GRANT SELECT//SELECT就是查询
ON TABLE Student
TO U1;

例2:把对Student和Course表的全部操作权限授予用户U2和U3.

GRANT ALL PRIVILEGES//全部权限就是 ALL PRIVILEGES
ON TABLE Student,Course
TO U2,U3;

例3:把对表SC的查询权限授给所有用户

GRANT SELECT
ON TABLE SC
TO PUBLIC;//PUBLIC就是所有用户

例4:把查询Student表和修改学生学号的权限授给用户U4.

GRANT SELECT,UPDATE(Sno)//修改 UPDATE,括号内是只能更新的属性
ON TABLE Student
TO U4;

例5:把对SC的INSERT权限授予U5,并允许将此权限再授予给其他用户WITH GRANT OPTION;此语句可以使被授予的用户传播此权限

GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION;//此语句可以使用户传播此权限

回收语句:REVOKE

格式:

      REVOKE <权限>[,<权限>]... 
      [ON <对象类型> <对象名>]
      FROM <用户>[,<用户>]...;

例1:把用户U4修改学生学号的权限收回

REVOKE UPDATE(Sno)
ON TABLE Student
FROM U4;

例2:收回所有用户对表SC的查询权限。

REVOKE SELECT
ON TABLE SC
FROM PUBLIC;

例3:把用户U5对SC的INSERT权限收回。

REVOKE INSERT
ON TABLE SC
FROM SC CASCADE;//级联收回

注意:这里U5->U6->U7,使用CASCADE会在收回U5的同时也收回U6和U7.

在这里插入图片描述
角色
角色指的是一类人。

创建:

CREATE ROLE<角色名>;

假设我们创建了角色名R1.
授权:R1这一类角色都获得了对Student的查询,更新,插入权限。

GRANT SELECT,UPDATE,INSERT
ON TABLE Student
TO R1;

将角色授予给其他角色或用户:小明和R2获得了R1这个角色(给R1角色添加用户)。

GRANT R1
TO 小明,R2;

收回:收回R1角色的查询Student表的权限。

REVOKE SELECT
ON TABLE Student
FROM R1;

试图机制

为不同的用户定义不同的视图,把不需要的数据隐藏起来,这样用户就不会进行误操作。

审计

把数据库所有操作都记录到审计日志中,然后就可以通过日志审查这里面是否存在非法行为。

数据加密

通过一些加密算法,把明文变成密文,这样别人就无法查看。

第五章:数据库完整性

正确性、相容性

正确性:是指数据是符合现实世界语义、反映当前实际状况的。如人类的性别,只能是男和女。
相容性:是指数据库同一对象在不同关系表中的数据是符合逻辑的。如年龄一般都在1-150岁。

为维护完整性,需要实现如下功能:

  1. 提供定义完整性约束条件的机制
  2. 提供完整性检查的方法
  3. 进行违约处理

三大完整性

  • 实体完整性:主码唯一且非空
  • 参照完整性:外码的约束——要么为空,要么对应另一张表的主码
  • 用户定义完整性:有以下三点
  1. 非空——NOT NULL
  2. 列值为一——UNIQUE
  3. 满足某一条件表达式——check

用户定义完整性的4种方法:

创建的时候用check进行约束

create table Student
{
	Sno char(9),
	Sname char(8) NOT NULL, /*用户定义完整性之NOT NULL非空*/
	Ssex char(2),
	check(Ssex='女' or Sname Not Like '张%');
	/*这个表中的项必须满足:性别是女的 或者 不姓张*/
}

用constraint进行完整性约束
例:建立学生登记表Student,要求学号在90000~99999之间,姓名不能取空值,年龄小于30,性别只能是“男”或“女”。


    CREATE TABLE Student
      (Sno  NUMERIC(6)
        CONSTRAINT C1 CHECK (Sno BETWEEN 90000 AND 99999),
        Sname  CHAR(20)  
        CONSTRAINT C2 NOT NULL,
        Sage  NUMERIC(3)
        CONSTRAINT C3 CHECK (Sage < 30),
        Ssex  CHAR(2)
        CONSTRAINT C4 CHECK (Ssex IN ( '男''女'))CONSTRAINT StudentKey PRIMARY KEY(Sno)
      )

C1、C2、C3、C4是那些完整性约束的名字。

断言
也是实现用户定义完整性的,比check高级一点。

create assertion <断言名><check子句>

例:数据库中最多只有60学生选修。

create assertion 断言名
check(
	60 >= select count(*)
	from SC
	GROUP BY Cno;
)

只有符合check()里面的表示式才可以执行成功,否则就会执行失败。

触发器
用户定义在关系表上的一类由事件驱动的特殊过程。

比断言更高级。

格式:

CREATE TRIGGER <触发器名>  
{BEFORE| AFTER} <触发事件> ON <表名>
FOR EACH  {ROW | STATEMENT}
[WHEN <触发条件><触发动作体>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
删除触发器:DROP TRIGGER <触发器名> ON <表名>

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-05-10 11:58:25  更:2022-05-10 11:58:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 22:46:27-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码