数据库的安全与保护
一、数据库的安全性
1、安全性
数据库的安全性是指保护数据库,防止不合法的 使用,以免数据的泄漏、更改和破坏。 对数据库的不合法使用,称为数据库的滥用。
数据库的滥用
无意的滥用
➢ 事务处理时发生系统故障
➢ 并发访问数据库时引起异常
➢ 数据的分布式处理引起异常
➢ 违反数据完整性约束的逻辑错误
恶意的滥用
➢ 未经授权的读数据(窃取信息)
➢ 未经授权的修改数据(破坏信息)
数据库的安全性是指尽可能 避免对数据库恶意的滥用
2、SQL中的安全机制
视图
视图是取自数据库一部分内容建立起来的表,但视图 仅是一个定义,并不实际存储在数据库中。 视图机制使系统具有三个优点:
数据安全性
数据独立性
操作简便性
用户(或应用程序)使用数据库的方式称为“权限”。
访问数据权限种类:
➢ 读权限:允许用户读数据,但不能修改数据。
➢ 插入权限:允许用户插入新的数据,但不能修改数据。
➢ 修改权限:允许用户修改数据,但不能删除数据。
➢ 删除权限:允许用户删除数据。
系统可以授给用户上述权限种的一个或多个,也可 以不授予上述任何一个权限。
用户权限
授权语句:
GRANT ON TO [WITH GRANT OPTION]
如:GRANT UPDATE ON S TO LOU WITH GRANT OPTION
GRANT INSERT(S#,C#) ON SC TO LOU
回收语句:
REVOKE ON FROM [RESTRICT|CASCADE]
CASCADE:回收权限时引起连锁回收,即把该用户转授的权限 同时收回。
RESTRICT:只有当不存在连锁回收现象时才能回收权限。
如:REVOKE SELECT, UPDATE ON S FROM WANG CASCADE
3、数据加密
用密码存储口令和数据;
数据传输采用密码传输。

4、自然环境的安全性 如火灾 水灾 地震 灰尘
二、数据库的完整性
在数据库投入运行后,应该保持数据库中的数据是正确的, 避免非法的更新。
非法更新包括:
输入本身错误数据
操作或程序错误
系统故障
并发事务错误
人为故意破坏
1、完整性子系统
数据库的完整性是指数据库中数据始终保持正确状态,防 止不符合语义的错误数据的输入和输出。
➢实体完整性 ➢引用(参照)完整性 ➢用户自定义完整性。
完整性子系统主要功能:
➢ 监督事务的执行,并测试是否违反完整性;
➢ 若有违反现象,则采取恰当的动作,譬如拒绝、 报告违反情况、改正错误等。
我们介绍SQL中的:
➢ 主键约束
主键约束是数据库中最重要的一种约束,在关系 中,主键值不允许为空,也不允许重复出现。
主键子句:
CREATE TABLE S
(S# CHAR(4) NOT NULL,
SNAME CHAR(8) NOT NULL,
AGE SMALLINT,
SEX CHAR(2),
PRIMARY KEY (S#))
主键短语:
CREATE TABLE S
(S# CHAR(4) PRIMARY KEY,
SNAME CHAR(8) NOT NULL,
AGE SMALLINT,
SEX CHAR(2))
➢ 外键约束
CREATE TABLE SC
(S# CHAR(4) NOT NULL,
C# CHAR(4) NOT NULL,
GRADE SMALLINT,
PRIMARY KEY (S#,C#),
FOREIGN KEY (S#) REFERENCES S(S#),
FOREIGN KEY (C#) REFERENCES C(C#),
CHECK (GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))
作为主键的关系 -》作为外键的关系
基本关系 -》依赖关系
对基本关系的删除操作和修改主键值的操作,会 对依赖关系产生影响。
一般可采用三种方式:
➢ RESTRICT方式
只有当依赖关系中没有一个外键值与要删除(修 改)的基本关系中主键值相对应时,系统才能执行删 除(修改)操作,否则拒绝此删除(修改)操作。
➢ CASCADE方式
将依赖关系中所有外键值与基本关系中要删除 (修改)的主键值相对应的元组一起删除(修改)。
➢ SET NULL方式
删除基本关系元组(修改基本关系主键值)时, 将依赖关系中所有与基本关系中被删除(修改)主键 值相对应的外键值置为空值。
➢ 属性值约束
➢ 非空值约束
如果要求某个属性的值不允许为空值,可在属性定 义后加上关键字“NOT NULL” 。
CREATE TABLE S
(S# CHAR(4) NOT NULL,
SNAME CHAR(8) NOT NULL,
……)
➢ 基于属性的检查子句(CHECK子句)
对一个属性的值加以限制。
CREATE TABLE SC
(……,
GRADE SMALLINT,
……,
CHECK (GRADE IS NULL) OR (GRADE BETWEEN 0 AND 100))
➢ 全局约束
