数据库安全与保护——数据库系统原理(本科)

第一节:数据库完整性

一、完整性约束条件的作用对象
1、 列级约束:列类型,取值范围,精确度的约束
主键primary key、外键foreign key、唯一unique、检查check、缺省default、非空not null
2、 元组约束:各字段之间相互约束,例如:开始日期小于结束日期
3、 表级约束:若干元组之间、关系之间的约束

二、定义与实现完整性约束
1、实体完整性:主键不能为空
2、参照完整性:实体之间参照某种关系
3、用户定义完整性约束:用户定义
三、命名完整性约束
Constraint [symbol]
四、更新完整性约束
1、 删除约束
Alter table 表名 drop foreign key 外键约束名
Alter table 表名 drop primary key
Alter table 表名 drop {约束名|候选字段名}
2、 添加约束
Alter table 表名 add constraint 主键名primary key 表名
Alter table 从表 add constraint 外键名 foreign key 从表references 主表

第二节:触发器

保护表数据的数据库对象, 当发生增删改查的时候被触发进行相应动作
一、创建触发器
Create trigger 触发名 触发时机(before | after) 触发事件(insert | delete | update) on表名 for each row 一条sql语句或begin…end多条语句
所以可以说MySQL创建以下六种触发器:
before insert before delete before update
After insert after delete after update
二、删除触发器
drop trigger 触发器名
三、使用触发器
Insert、delete、update都会触发

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

一、用户账号管理
1、创建用户:create user ‘ 用户名 ’ @ ‘ 主机名 ’ identified ‘ 密码 ’
2、查看用户:select user,password from mysql.user
3、删除用户:drop user 用户名@主机名
4、修改用户:rename user 旧用户名 to 新用户名
5、修改密码:set password [ for user ] = password( ‘ 新密码 ’ )
二、账户权限管理——授权(grant)
新创建的用户不允许任何操作,必须被授权
(1)列权限:一个具体列相关
(2)表权限:一个具体表相关
(3)数据库权限:一个具体数据库中所有表相关
(4)用户权限:所有数据库所有表相关

第四节:事务与并发控制

一、事务的概念——恢复和并发控制的基本单位
用户定义数据库操作序列,要么全做,要么全不做,不可分割的工作单位
二、事务的特征
原子性:要么全部执行,要么全部不执行。
一致性:事务前后,数据库的状态都满足所有的完整性约束
隔离性:并发执行的事务是隔离的,一个不影响一个
持久性:事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。
三、并发操作问题
1、丢失更新:后一个事物更新的结果被前一事务所做更新覆盖
2、不可重复读:一个事务两次读取同一个数据,两次读取的数据不一致
3、脏数据:一个事务读取了另一个事务未提交的数据
四、封锁
事务在执行前向系统发出请求,对其封锁,在事务执行前不被改变
排他锁(T):事务完成前不需要被请求
共享锁(S):可以被请求,但是要等事务完成才执行
粒度:描述封锁的数据单元大小
活锁:级别低的无法执行——避免方法:先来先服务策略
死锁:两个以上事务循环等待被同组中另一事务锁住的情况
避免方法:一次性锁请求、锁请求排序、序列化处理、资源剥夺

第五节:备份与恢复

数据丢失或被破坏原因:
1、硬件故障
2、软件故障
3、病毒
4、误操作
5、自然灾害
6、盗窃
备份:select * from 表名 into outfile ‘路径/文件名.txt’
恢复:load data local infile ‘路径/文件名.txt’ into table 表名

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章