数据库系统概论—安全、完整性

yizhihongxing

数据库系统概论—基础篇(3)

三.数据库安全性

1.数据库安全性概述

数据库的安全性指保护数据库以防不合法使用所造成的数据泄露、更改或破坏

2.数据库安全性控制

2.1用户身份鉴别

  • 静态口令鉴别
  • 动态口令鉴别
  • 生物鉴别特征
  • 智能卡鉴别

2.2存取控制

  • 自主存取控制:给用户限权(DAC,C1级)
  • 强制存取控制:给数据库对象一定的密级(MAC,B1级)

2.3自主存取控制方法(授权:授予与收回)

  • 授权
%ign%ignore_a_1%re_pre_1%
  • 收回
Revoke 权限
on (类型,表/视图...) 对象名1,(类型,表/视图...) 对象名2...
from 用户1,用户2...
CASADE/RESTRICT;(是否级联)
  • 创建用户
CREATE USER 用户名 
with DBA/RESOURCE/CONNECT;

DBA:超级用户,有所有数据库对象的限权

RESOURCE:能创建表和视图

CONNECT:只能在限权内操作

2.4数据库角色

数据库角色是一组数据库操作相关的权限的集合(权限的集合)

#授予
Grant 权限
on (类型,表/视图...) 对象名
to 角色1,角色2...;
#收回
Grant 权限
on (类型,表/视图...) 对象名
to 用户1,用户2...;

2.5强制存取控制方法(数据加密)

主体:用户;客体:数据

  • 主体的许可证 >= 客体的密级时,该主体才能读取相应的客体
  • 主体的许可证 <= 客体的密级时,该主体才能相应的客体

3.视图机制

视图可以隐藏部分数据,控制要查询的数据是否对用户是可见的

4.审计

审计功能把用户对数据库的所有操作记录下来放入审计日志

四.数据库完整性

数据库完整性是数据库的正确性和相容性,是为例防止数据库中存在不符合语义的数据。

1.实体、参照完整性

  • 实体:非空唯一,在CREATE TABLE中使用PRIMART KEY定义。(主码)
  • 参照:外码,参照表的主码是被参照表的主码

2用户自定义完整性

针对某一具体应用的数据必须满足的语义要求。

  • 属性上的约束(列级)

NOT BULL:列值非空

UNIQUE:列值唯一

CHECK:是否满足条件(类型 属性 CHECK(Ssex in('男','女'))性别在男女中选)

  • 元组上的约束(表级)

eg:当性别是男,名字不以”Ms.“开头

建表...
CHECK(Sex = '女' or Sname not like'Ms.%');

3.完整性约束字句

给约束起名字,CONSTRAINT 约束名一起使用

CONSTRAINT 约束名 约束条件;

4.断言

更一般的约束

#创建
CREATE ASSERTION 断言名
CHECK字句;

#删除
DROP ASSERTION 断言名;

5.触发器

由事件触发的特殊过程(事件条件功能)

#创建
CREATE TRIGGER 触发器名
BEFORE/ALTER 触发事件 on 表名
REFRTENCING NEW/OLD ROW AS 变量#NEW/OLD ROW是两个表(新/旧)
FOR EACH ROW/STATEMENT#行级/列级
WHEN 触发事件 触发动作;

#删除
DROP TRIGGER 触发器名 on 表名;

原文链接:https://www.cnblogs.com/wht-de-bk/p/17379724.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:数据库系统概论—安全、完整性 - Python技术站

(0)
上一篇 2023年5月6日
下一篇 2023年5月8日

相关文章

  • 快速解决mysql深分页问题

    下面是“快速解决mysql深分页问题”的完整攻略。 1. 什么是深分页问题 深分页问题是指在查询mysql数据时,需要跨越非常大的范围进行分页查询,导致查询时间过长或者系统崩溃的情况。比如一个很大的数据表有1000000条记录,每页显示10条记录,当我们需要查询第900000到第900010条记录时,就需要检索整张表中的数据,如果数据量很大,就会导致查询速度…

    MySQL 2023年5月19日
    00
  • MySQL ERROR 2013 (HY000)错误解决方法

    MySQL ERROR 2013 (HY000)错误是因为连接MySQL服务器超时导致的,可能由于网络问题、MySQL服务器负载过高或者MySQL配置不当等原因引起。这种错误通常会在进行大量数据处理或负载较高的时间段内出现。 为了解决这个问题,可以尝试以下几种方法: 方法一:增加MySQL服务超时时间 MySQL默认超时时间较短,可以通过修改MySQL配置文…

    MySQL 2023年5月18日
    00
  • MySQL主键自增长(AUTO_INCREMENT)详解

    主键是数据库表中用于唯一标识每个记录的列,自增长是一种主键属性,指的是当插入新记录时,自动分配一个唯一的整数值作为主键,每次插入新记录时,该自增长值会自动加1。 在MySQL中,可以将主键列定义为自增长列,可以使用关键字“AUTO_INCREMENT”来实现。 具体使用方法如下: 在创建表时,定义主键列并设置为自增长: CREATE TABLE 表名 ( i…

    MySQL 2023年3月9日
    00
  • mysql慢日志使用mysqldumpslow进行分析

    环境:centos7、mysql5.7、慢日志 1、mysqldumpslow参数解析 mysql> show variables like ‘%slow_query%’; #mysql日志路径 +———————+————————————–+ | Variable_name …

    MySQL 2023年4月13日
    00
  • MySQL如何获取binlog的开始时间和结束时间

    MySQL数据库恢复到指定时间点时,我们必须通过MySQL全备+MySQL增量备份(可选)+MySQL的二进制日志(binlog)进行重放来恢复到指定时间点,实际的生产环境中,可能一段时间内生成了多个二进制日志文件(binlog), MySQL本身不会存储二进制日志文件(binlog)的开始时间和结束时间,如果要还原到某个时间点,我们需要知道还原后重放哪些二…

    MySQL 2023年5月6日
    00
  • mysql 恢复数据时中文乱码

    mysql恢复数据时中文乱码,解决办法。 用source命令导入mysql数据库怎么设置中文编码 1.导出数据时指定编码在导出mysql sql执行文件的时候,指定一下编码格式: mysqldump -uroot -p –default-character-set=utf8 mo(dbname) > E://xxxx.sql 2.导入数据时指定编码 …

    MySQL 2023年4月12日
    00
  • 详解MySQL 联合查询优化机制

    详解MySQL 联合查询优化机制 MySQL是一款性能优良的关系型数据库,除了基础的查询语句外,MySQL还支持多种高级查询语句,如联合查询。本文将详细讲解MySQL联合查询的优化机制。 联合查询的基础语法 联合查询可以将多个SELECT语句的结果集合并为一个结果集输出,语法如下: SELECT column1, column2, ……, colum…

    MySQL 2023年5月19日
    00
  • mysql安装后.net程序运行出错的解决方法

    以下是关于“mysql安装后.net程序运行出错的解决方法”的完整攻略: 问题描述 安装了mysql数据库后,在.net程序运行时可能会出现以下错误提示: MySql.Data.MySqlClient.MySqlException: ‘Authentication to host ‘[localhost]’ for user ‘root’ using met…

    MySQL 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部