第四章 数据库安全性
- ※
定义
:数据库的安全性是指保护数据库以防止不合法使用所造成的【数据泄露】【更改】或【破坏】 系统安全保护措施是否有效
是数据库系统主要的性能指标之一防范的对象
①非法非授权用户 ②合法用户的非法操作- ※
采取的措施
(1)用户身份鉴别:静态口令(用户名密码),动态口令(验证码)、生物特征(指纹人脸),智能卡(扫码/芯片电路)【防范的是非法用户】
(2)权限(自主存取控制)、加密、视图、审计 - ※
三类安全性问题
:①非授权用户对数据库的恶意存取和破坏 ②数据库中重要或敏感的数据被泄露 ③安全环境的脆弱性 - ※
评测标准
:TCSEC、CC 安全性级别划分指标
①安全策略②责任 ③保证 ④文档用户身份鉴别
:①静态口令鉴别 ②动态口令鉴别 ③生物特征鉴别 ④智能卡鉴别存储控制机制
:①定义用户权限 ②合法权限检查操作:
1创建用户
create user user1@localhost identified by '123456';
create user user1@localhost
2查看现有用户
select host,user,password from mysql.user; //不在mysql下
//或者
use mysql
select host,user,password from user;
3.删除用户(删除之后再次创建)
drop user user1@localhost;
4.验证新用户
– 新用户登录到mysql
C:\Users\Administrator.000>mysql -uzhangruidan -p
Enter password: ******
– 发现什么操作也做不了
mysql> use xskc
ERROR 1044 (42000): Access denied for user 'zhangruidan'@'localhost' to database 'xskc'
5授予权限 📕grant on to
grant select on xskc.student to user1@localhost;
grant select,insert on *.* to 'user1'@'localhost';
all privileges
6查看权限
show grants for user1@localhost;
show privileges;(查看所有权限)
7收回权限
revoke select on xskc.student from username@localhost;
验证权限
– user1用户登陆到mysql,验证是否有相应的权限
C:\users\administrator>mysql -uuser1 -p123456
use xskc;
select * from student;
– 可以检索
delete from student;
select * from sc;
8修改root用户密码
有两种方法:
(1)set password=password('111111') ; //注意引号
(2)update mysql.user set password=password('111111') where user='root' and host='localhost';
flush privileges; //重新加载权限表
9root用户修改普通用户的密码
有两种方法:
(1)set password for 'user1'@'localhost'= password('111111');
(2)update mysql.user set password=password('111111') where user='user1' and host='localhost';
flush privileges //重新加载权限表
10.普通用户修改密码
– 切换到mysql安装目录
cd C:\wamp\bin\mysql\mysql5.1.32\bin
– 普通用户等登陆到mysql
C:\wamp\bin\mysql\mysql5.1.32\bin>mysql -uuser1 -p123456
set password=password('111111') ;
第五章 数据库完整性
-
定义
:是指数据的【正确性】和【相容性】 -
作用
:防止数据库中存在不符合语义的数据(防止不正确的数据)、保护数据库防止恶意破坏和非法存取 -
防范对象
:非法用户、非法操作(防止非法存取) -
为保证数据完整性,DBMS须提供完整性的定义方法、检查方法及违约处理。
-
完整性约束的分类:列级约束和表级约束;静态约束和动态约束
-
MySQL支持的约束类型有:
主码约束、外码约束、唯一约束、非空约束、默认值约束
-
主码约束
定义:primary key
检查:插入新纪录或对主码更新时要检查主码约束(15题的(1,2))
违约处理:拒绝 -
外码约束
定义:foreign key
检查及违约处理:
1)参照表修改外码值时,可能会破坏参照完整性;拒绝(15题的(3))
2)参照表插入新纪录时,可能会破坏参照完整性;拒绝(15题的(4))
3)被参照表修改主码时,可能会破坏参照完整性;拒绝/级联/设为空值(15题的(5))
4)被参照表删除记录时,可能会破坏参照完整性;拒绝/级联/设为空值(15题的(6)) -
数据库的更新操作会破坏数据完整性
-
需要注意的情况:
1.创建完整性约束时,必须先保证表中的数据符合约束条件。
2.创建外码时,必须先创建对应的主码。
举例,sc表中sno是外码,它参照Student表中的主码sno,所以要先定义student表中的主码sno,
再定义sc中的外码sno;
sc表中cno是外码,它参照course表中的主码cno,所以要先定义course表中的主码cno,
再定义sc中的外码cno;
3.删除主码时,必须先删除对应的外码。
举例,删除course表中的主码cno时,必须先删除sc表中外码cno
删除student表中的主码sno时,必须先删除sc表中外码sno
4.MYSQL有两种存储引擎:MYISAM和INNODB。
二者的区别:MYISAM不支持事务,不支持外键;
INNODB支持事务,支持外键约束;
MYSQL5.5以上版本默认的是INNODB。
1)如何查看表的存储引擎
show create table student;
2)如何修改表的存储引擎
alter table student engine=innodb;
3)如何查看表的默认存储引擎
show engines;
4)如何修改表的默认存储引擎
在配置文件my.ini中的 [mysqld] 下面加入default-storage-engine=INNODB 一句,保存,重启mysql服务器
5.1实体完整性
检查
:①主码主属性不能为空 ②主码是否唯一
5.2参照完整性
检查
:①外码取值为空 ②引用列的值
违约处理
:1、拒绝执行 2、级联操作 3、设置为空值
5.3用户定义的完整性
属性限制
:①列值非空 not null ②列值唯一 unique ③用check短语指定列值应该满足的条件 check(ssex in(‘男’,‘女’))
元组限制
:check(ssex=‘女’ or sname not like ‘Ms.%’)
5.7触发器
定义
:是用户定义在关系表上的一类由事件驱动的特殊过程激活触发器
其中:trigger_time是触发器的触发事件,可以为before(在检查约束前触发)或after(在检查约束后触发);trigger_event是触发器的触发事件,包括insert、update和delete,需注意对同一个表相同触发时间的相同触发事件,只能定义一个触发器;可以使用old和new来引用触发器中发生变化的记录内容。
推荐博文删除触发器
drop trigger 触发器名 on 表名
第六章 关系数据库
第一范式
:每一个分量必须是不可分的数据项数据依赖
:一个关系内部【属性】与【属性】之间的一种约束关系,是通过属性间值的相等与否体现出来的数据间相关联系关系模式存在的问题
:①数据冗余 ②更新异常 ③插入异常 ④删除异常X->Y
:X函数确定Y ,Y函数依赖于X平凡函数依赖
:X->Y 和 【 Y⊆X 】 (包含于)
候选码:能够完全决定所有属性的那个属性和属性组 例如:学号
非主属性: 不包含在任何一个候选码中的属性
完全函数依赖: 如果x决定y,那么x的任何一个真子集x’都不能决定y
全码:整个属性组是码
规范化:一个低一级范式的关系模式通过模式分解可以转换为若干个高一级范式的关系模型的集合,这种过程就叫规范化
【完全函数依赖】
{学号,课号}–>成绩
学号+课号 可以决定 成绩 但只有学号or只有课号无法决定成绩
【部分函数依赖】
{学号,课号}–>姓名
只有学号就能决定姓名 (课号是冗余的)
没有保持函数依赖,丢失函数依赖B→C,并且B—t—>A 变成了直接依赖
1、掌握规范化理论,包括函数依赖、非平凡的函数依赖、部分函数依赖、完全函数依赖、传递函数依赖、第1NF、第2NF、第3NF、BCNF的概念,会用该理论指导数据库的逻辑设计;
2、掌握规范化的过程,会将一个不好的关系模式规范化一个好的;
3、掌握Armstrong公理系统,包括公理内容、逻辑蕴含、函数依赖闭包、属性闭包、依赖集等价及最小依赖集;
4、掌握模式分解的等价定义,掌握模式分解的方法。
1、看中国大学慕课《数据库系统(中)》第4讲、第5讲、第6讲;
2、在学习通下载本章预习任务第6章关系数据理论,位置在数据库预习提纲文件夹里,通过看电子教材和PPT,完成预习任务,上课时检查;
作业:
完成第6章的测试(择时发布);