数据库系统原理:第六章:数据库安全与保护

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: 学习

第一节:数据库完整性

1.完整性约束条件的作用对象包括元组、列、表
2.列级约束主要包括:

(1)对数据类型的约束,包括数据类型、长度、精度等
(2)对数据格式的约束
(3)对取值范围或取值集合的约束
(4)对空值的约束

3.关系模型中包括实体完整性、参照完整性、用户自定义完整性三类完整性约束
4.在MySQL中,实体完整性通过主键约束和候选键约束来实现
5.命名完整性约束的方法是在各种完整性约束的定义说明之前加上关键字“constraint”和该约束的名字
6.在MySQL中,指定一个外键时需要遵守的规则包括:

(1)被参照表必须已经用一条create table语句创建了,或者必须是当前正在创建的表,如若是后一种情形,则被参照表与参照表是同一个表,这样的表成为自参照表,这种结构成为自参照完整性
(2)必须为被参照表定义主键
(3)必须在被参照表的表名后面指定列名或列名的组合,这个列或列组合必须是这个被参照表的主键或候选建
(4)尽管主键是不能包含空值的,但允许在外键中出现一个空值。这意味着,只要外键的每个非空值出现在指定的主键中,这个外键的内容就是正确的
(5)外键中的列的数目必须和被参照表的主键中的列的数目相同
(6)外键中的列的数据类型必须和被参照表的主键中的对应列的数据类型相同

第二节:触发器

1.触发器是用户定义在关系表上的一类由事件驱动的数据库对象,也是一种保证数据完整性的方法
2.触发器的主要作用:

触发器的主要作用是实现主键和外键不能保证的复杂的参照完整性和数据一致性,从而有效保护表中的数据

3.在触发器的创建中,每个表每个事件每次只允许一个触发器,所以,每个表最多支持6个触发器,单一触发器不能与多个事件或多个表关联
4.MySQL支持的触发器有:

insert触发器、delete触发器、update触发器

第三节:安全性与访问控制

1.数据库的安全性是指保护数据库以防止不合法的使用而造成数据泄露、更改或破坏
2.在MySQL数据库中,数据库系统对数据的安全管理是使用身份证验证、数据库用户权限确认等访问控制措施,来保护数据库中的信息资源,以防止这些数据遭受破坏
3.MySQL的用户账号及相关信息都存储在一个名为mysql的MySQL数据库中,这个数据库有一个名为user的数据表,包含了所有用户账号,并且它用一个名为user的列存储用户的登录名
4.可以使用grant语句来实现权限的授予,权限的转移可以通过在grant语句中使用with子句来实现。如果将with子句指定为关键字“with grant option”,则表示to子句中指定的所有用户都具有把自己所拥有的权限授予其他用户的权利,而无论其他用户是否拥有该权限。当需要撤销一个用户的权限而又不希望将该用户从系统中删除时,可以使用revoke语句来实现。要使用revoke语句,必须拥有mysql数据库的全局create user权限或者update权限

第四节:事务与并发控制

1.为了保证数据的一致性和正确性,数据库系统必须保证事务具有四个特征(ACID特征),即:

原子性、一致性、隔离性、持久性

2.当多个事务交错执行时,可能出现不一致的问题,这也称为并发操作问题,包括:

丢失更新、不可重复读、和读“脏”数据

3.简述封锁的基本思想:

需要时,事务通过向系统请求对它所希望的数据对象加锁,以确保它不被非预期改变

4.通过粒度来描述封锁的数据单元的大小。DBMS可以决定不同粒度的锁,由最底层的数据元素到最高层的整个数据库,粒度越细,并发性就越大,但软件复杂性和系统开销也就越大
5.两个以上事务循环等待被同组中另一事务锁住的数据单元的情形,成为“死锁”
6.死锁的预防主要有以下方法:

(1)一次性锁请求 每一事务在处理时一次提出所有的锁请求,仅当这些请求全部满足时事务处理才进行,负否则让其等待,这样则不会出现死锁地情况
(2)锁请求排序 将每个数据单元标以线性顺序,然后要求每一事务都按照此顺序提出锁请求
(3)序列化处理 通过应用设计为每一数据单元建立一个”主人“程序,对给定数据单元的所有请求都发送给”主人“,而”主人“以单道的形式运行
(4)资源剥夺 每当事务因锁请求不能满足而受阻时,强行令两个冲突的事务中的一个rollball,释放所有的锁,以后再重新运行。这个方法得注意防止活锁的发生

7.事务划分成以下两个阶段:

(1)发展或加锁阶段
(2)收缩或释放阶段

第五节:备份与恢复

1.造成数据库运行事务异常中断的因素:

计算机硬件故障、计算机软件故障、病毒、人为误操作、自然灾害和盗窃

2.数据库备份是指通过导出数据或者复制表文件的方式来制作数据库的副本;

数据库恢复则是当数据库出现故障或遭到破坏时,将备份的数据库加载到系统,从而使数据库从错误状态恢复到备份时的正确状态

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
4月前
|
算法 关系型数据库 MySQL
【MySQL 解析】数据库的乐观锁和悲观锁实现原理
【1月更文挑战第11天】【MySQL 解析】数据库的乐观锁和悲观锁实现原理
|
4月前
|
NoSQL 中间件 API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(下)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
84 2
|
4月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)(上)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
74 0
|
7天前
|
存储 算法 搜索推荐
矢量数据库基础:概念、原理与应用场景
【4月更文挑战第30天】矢量数据库,处理高维向量数据的工具,应用于GIS、推荐系统、图像搜索及语义搜索。核心原理是将原始数据嵌入到高维空间,通过索引算法优化搜索性能。现代深度学习模型如Word2Vec提升向量表示准确性,KD-Tree、LSH等算法加速相似性搜索。随着技术发展,矢量数据库在数据科学领域的重要性日益增强。
|
12天前
|
存储 关系型数据库 MySQL
数据库期末考试基础——数据库系统概述
数据库期末考试基础——数据库系统概述
16 2
|
14天前
|
存储 SQL 数据库
数据库库表结构设计:原理、实例与最佳实践
数据库库表结构设计:原理、实例与最佳实践
33 0
|
15天前
|
C#
【自考】之数据库系统原理
【自考】之数据库系统原理
15 0
|
2月前
|
缓存 Java 数据库连接
mybatis 数据库缓存的原理
MyBatis 是一个流行的 Java 持久层框架,它封装了 JDBC,使数据库交互变得更简单、直观。MyBatis 支持两级缓存:一级缓存(Local Cache)和二级缓存(Global Cache),通过这两级缓存可以有效地减少数据库的访问次数,提高应用性能。
283 1
|
3月前
|
存储 关系型数据库 数据库
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
数据库索引的原理,为什么要用 B+树,为什么不用二叉树?
|
3月前
|
NoSQL Java API
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
分布式锁【数据库乐观锁实现的分布式锁、Zookeeper分布式锁原理、Redis实现的分布式锁】(三)-全面详解(学习总结---从入门到深化)
301 0