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

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS PostgreSQL,集群系列 2核4GB
简介: 学习

第一节:数据库完整性

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.数据库备份是指通过导出数据或者复制表文件的方式来制作数据库的副本;

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

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
30天前
|
缓存 算法 关系型数据库
Mysql(3)—数据库相关概念及工作原理
数据库是一个以某种有组织的方式存储的数据集合。它通常包括一个或多个不同的主题领域或用途的数据表。
46 5
Mysql(3)—数据库相关概念及工作原理
|
7天前
|
存储 Java 关系型数据库
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接创建、分配、复用和释放等操作,并通过电商应用实例展示了如何选择合适的连接池库(如HikariCP)和配置参数,实现高效、稳定的数据库连接管理。
20 2
|
1月前
|
SQL 关系型数据库 数据库
SQL数据库:核心原理与应用实践
随着信息技术的飞速发展,数据库管理系统已成为各类组织和企业中不可或缺的核心组件。在众多数据库管理系统中,SQL(结构化查询语言)数据库以其强大的数据管理能力和灵活性,广泛应用于各类业务场景。本文将深入探讨SQL数据库的基本原理、核心特性以及实际应用。一、SQL数据库概述SQL数据库是一种关系型数据库
36 5
|
1月前
|
SQL 关系型数据库 MySQL
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
sql注入原理与实战(三)数据库操作
|
1月前
|
SQL 存储 Java
sql注入原理与实战(二)数据库原理
sql注入原理与实战(二)数据库原理
|
3月前
|
消息中间件 Kafka 数据库
深入理解Kafka的数据一致性原理及其与传统数据库的对比
【8月更文挑战第24天】在分布式系统中,确保数据一致性至关重要。传统数据库利用ACID原则保障事务完整性;相比之下,Kafka作为高性能消息队列,采用副本机制与日志结构确保数据一致性。通过同步所有副本上的数据、维护消息顺序以及支持生产者的幂等性操作,Kafka在不牺牲性能的前提下实现了高可用性和数据可靠性。这些特性使Kafka成为处理大规模数据流的理想工具。
72 6
|
4月前
|
存储 SQL 关系型数据库
(六)MySQL索引原理篇:深入数据库底层揭开索引机制的神秘面纱!
《索引原理篇》它现在终于来了!但对于索引原理及底层实现,相信大家多多少少都有了解过,毕竟这也是面试过程中出现次数较为频繁的一个技术点。在本文中就来一窥`MySQL`索引底层的神秘面纱!
311 5
|
4月前
|
SQL 存储 安全
SQL数据库:核心原理、应用实践与未来展望
在电子商务领域,SQL数据库用于存储商品信息、用户信息、订单信息等。通过SQL数据库,电商平台可以实现商品的快速检索、用户行为的跟踪分析、订单状态的实时更新等功能,提升用户体验和运营效率。
|
3月前
|
SQL 安全 关系型数据库
【惊天秘密】破解数据库管理难题!——Yearning开源审计平台:你的数据库安全守护神,一键审计,轻松应对挑战!
【8月更文挑战第21天】Yearning是一款基于Python的开源数据库审计平台,简化数据库管理和审计流程,支持MySQL、PostgreSQL等。核心功能包括SQL审计、执行、回滚及备份,提升数据库管理效率。安装简便,支持通过pip安装并快速启动服务。Yearning提供智能SQL审查,确保安全性与合规性,同时还具备友好的用户界面及API客户端支持,适用于多种数据库操作场景。
105 0
|
3月前
|
存储 NoSQL 关系型数据库
Web中的数据库:原理、应用与代码实现
Web中的数据库:原理、应用与代码实现
100 0