å¨çº¿è§ç
å¨çº¿è§ç
å¨çº¿è§ç
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
第 八 章§1 数 据 库 的 安 全 性数 据 库 系 统 控 制一 、 什 么 是 数 据 库 的 安 全 性 ?指 : 保 护 数 据 库 , 防 止 因 用 户 非 法 使 用 数 据库 造 成 数 据 泄 露 、 更 改 或 破 坏 。二 、 安 全 性 控 制 的 一 般 方 法(1) 用 户 身 份 的 标 识 和 鉴 定 。(2) 存 取 权 限 控 制 。(3) 定 义 并 使 用 视 图 。(4) 审 计 制 度 。(5) 数 据 加 密 。1
三 、 存 取 权 限 控 制1. 存 取 权 限 的 基 本 类 型SELECT INSERTDELETEUPDATE2. 初 始 权 限 的 产 生 : 数 据 库 对 象 的 初 始 拥 有 者 。3.SQL 授 权 语 句格 式 :GRANT < 权 限 表 > ON < 数 据 库 元 素 >TO < 用 户 表 >[ WITH GRANT OPTION ]2
例 1 Student 和 SC 的 owner 向 User1, User2 授 权(1)GRANT SELECT, INSERT ON StudentTO User1, User2WITH GRANT OPTION(2)GRANT SELECT ON SCTO User1, User2WITH GRANT OPTION3
ownerSELECTStudent**user1SELECTStudent*user1INSERTStudent*user1SELECTSC*ownerINSERTStudent**ownerSELECTSC**ownerINSERTSC**user2SELECTStudent*user2INSERTStudent*user2SELECTSC4*
例 2User1 向 User3 授 权GRANT SELECT ON StudentTO User35
ownerSELECTStudent**user1SELECTStudent*user1INSERTStudent*user1SELECTSC*ownerINSERTStudent**user3SELECTStudentownerSELECTSC**ownerINSERTSC**user2SELECTStudent*user2INSERTStudent*user2SELECTSC6*
ownerSELECTStudent**user1SELECTStudent*user1INSERTStudent*user1SELECTSC*ownerINSERTStudent**user3SELECTStudentownerSELECTSC**user3INSERTStudentownerINSERTSC**user2SELECTStudent*user2INSERTStudent*user2SELECTSC8*
4. SQL 收 回 权 限 语 句格 式 : REVOKE < 权 限 表 > ON < 数 据 库 元 素 >FROM < 用 户 表 >[ CASCADE ]例 1 owner 用 REVOKE 语 句 , 从 User2 收 回 权 限REVOKE INSERT ON StudentFROM User2CASCADE9
10user3SELECTStudentuser3INSERTStudentownerSELECTStudent**ownerINSERTStudent**ownerSELECTSC**ownerINSERTSC**user1SELECTStudent*user1INSERTStudent*user1SELECTSC*user2SELECTStudent*user2INSERTStudent*user2SELECTSC*user3INSERTStudentuser2INSERTStudent*
例 2 owner 用 REVOKE 语 句 , 从 User2 收 回 权 限REVOKE GRANT OPTIONFORSELECT ON StudentFROM User2CASCADE11
ownerSELECTStudent**user1SELECTStudent*user1INSERTStudent*user1SELECTSC*ownerINSERTStudent**user3SELECTStudentownerSELECTSC**ownerINSERTSC**user2SELECTStudent*user2SELECTSC12*
§2 事 务 管 理 ( 书 : p251 8.6)一 、 事 务 概 念1. 什 么 是 事 务 : 事 务 是 访 问 并 可 能 更 新 数 据 库 数据 的 一 个 程 序 执 行 单 位 。BEGIN TRANSACTIONupdate …….…….事 务 的 显 式 说 明if (T) COMMIT;BEGIN TRANSACTIONinsert …….…….if (T) ROLLBACK;13
2. 事 务 的 性 质 (ACID)(1) 原 子 性 (Atomicity)。组 成 事 务 的 操 作 的 不 可 分 割 性 。 即 , 事 务 中导 致 数 据 库 状 态 改 变 的 操 作 , 要 么 全 部 成 功 地 执行 , 要 么 都 不 执 行 。(2) 一 致 性 (Consistency)。一 个 事 务 必 须 是 一 个 正 确 的 程 序 , 它 使 数 据库 从 一 个 一 致 状 态 转 变 为 另 一 个 一 致 状 态 。(3) 隔 离 性 (Isolation)。一 个 正 在 执 行 的 事 务 在 提 交 之 前 , 不 允 许 把它 对 共 享 数 据 所 做 的 改 变 , 提 交 给 其 它 事 务 使14用
(4) 持 久 性 (Durability)。或 称 永 久 性 (permanence)。 指 : 一 旦 某 个事 务 已 经 提 交 , 即 使 系 统 发 生 故 障 , 也 不 能 丢 失该 事 务 的 执 行 结 果 。二 、 事 务 管 理 和 事 务 恢 复1. 数 据 库 系 统 故 障 分 类 系 统 故 障 ( 软 故 障 ) 介 质 故 障 ( 硬 故 障 ) 事 务 故 障15
2. 日 志 文 件 (Log File): 特 点 : 记 录 了 所 有 对 数 据 库 更 新 操 作 的 具 体细 节 。 创 建 日 志 的 原 则 : “ 先 物 理 地 写 日 志 记 录 ,后 执 行 数 据 库 更 新 操 作 ”。3. 事 务 恢 复 :利 用 日 志 文 件 的 记 录 , 可 以 恢 复 事 务 故 障 。 事 务 是 恢 复 单 元 。16
§3 并 发一 、 并 发 及 其 问 题1. 什 么 叫 并 发 : 多 个 事 务 同 时 存 取 相 同 的 数 据 。2. 并 发 带 来 的 问 题 --- 数 据 一 致 性 问 题(1) 丢 失 修 改事 务 A 时 间 事 务 B读 数 据 Dt1t2读 数 据 D修 改 数 据 Dt3t4修 改 数 据 D?17
(3) 不 可 重 复 的 读事 务 A读 数 据 D修 改 数 据 D时 间t1t2t3t4事 务 B读 数 据 D读 数 据 D?结 论1. 并 : 发 事 务 必 须 有 合 适 的 控 制 机 制 。2. 并 发 事 务 必 须 可 串 行 化 地 调 度 。 否 则 , 不 能 使 数据 库 系 统 高 效 运 行 , 并 保 证 事 务 有 正 确 结 果 19。
二 、 并 发 控 制 机 制 之 一 : 封 锁1. 锁 的 分 类 排 它 锁 (X): 拒 绝 其 它 事 务 任 何 类 型 的 锁 请 求 。 共 享 锁 (S): 拒 绝 其 它 事 务 的 X 锁 请 求 , 但 允 许其 它 事 务 的 S 锁 请 求 。2. 锁 请 求 的 相 容 性XS事 务 B事XNNY务AS N Y YY Y Y3. 死 锁20
三 、 三 级 锁 协 议 --- 解 决 数 据 一 致 性 问 题1. 一 级 锁 协 议 --- 解 决 “ 丢 失 修 改 ” 问 题一 个 事 务 在 修 改 数 据 A 之 前 , 必 须 先 对 数 据 A加 X 锁 , 直 到 事 务 结 束 才 释 放 该 锁 。事 务 A时 间事 务 B加 X 锁 !读 数 据 D修 改 数 据 D开 锁 !t1t2t3t4t5加 X 锁 ?读 数 据 D修 改 数 据 D?21
2. 二 级 锁 协 议 --- 解 决 “ 读 脏 数 据 ” 问 题在 一 级 锁 协 议 的 基 础 上 , 加 上 约 定 : 一 个事 务 在 读 取 数 据 A 之 前 , 必 须 对 数 据 A 加 S 锁 ,读 入 数 据 A 之 后 立 即 释 放 S 锁 。事 务 A时 间事 务 B加 X 锁 !读 数 据 D修 改 数 据 D事 务 回 退开 锁 !t1t2t3t4t5t6加 S 锁 ?读 数 据 D?22
3. 三 级 锁 协 议 --- 解 决 “ 不 可 重 复 读 ” 问 题在 一 级 锁 协 议 的 基 础 上 , 加 上 约 定 : 一 个事 务 在 读 取 数 据 A 之 前 , 必 须 对 数 据 A 加 S 锁 ,直 到 事 务 结 束 , 才 能 释 放 S 锁 。事 务 A时 间事 务 B加 X 锁 ?读 数 据 Dt1t2t3加 S 锁 !读 数 据 D修 改 数 据 Dt4t5读 数 据 D?t6 开 锁 !23
四 、 事 务 的 可 串 行 性 和 两 阶 段 锁 协 议1. 事 务 的 可 串 行 性 : 如 果 多 个 事 务 的 一 个 交 错 执 行过 程 的 结 果 , 与 它 们 的 一 个 串 行 执 行 过 程 产 生 的结 果 相 同 , 则 称 这 些 事 务 是 可 串 行 化 的 。2. 两 阶 段 锁 协 议(1) 如 果 所 有 的 事 务 都 遵 守 “ 两 阶 段 锁 协 议 ”, 则这 些 事 务 是 可 串 行 化 的 。(2) 两 阶 段 锁 协 议 : 每 个 事 务 分 两 个 阶 段 提 出 锁 操 作 获 得 锁 阶 段 : 任 何 事 务 可 以 申 请 获 得 锁 , 但 不能 释 放 锁 。 释 放 锁 阶 段 : 任 何 事 务 可 以 申 请 释 放 锁 , 但 不24能 获 得 新 锁 。
五 、SQL 标 准 的 隔 离 性 级 别隔 离 性 级 别 指 : 多 个 事 务 并 发 执 行 时 , 一 个 事务 所 能 容 忍 干 扰 的 程 度 。1. SERIALIZABLE( 可 串 行 化 )------- 缺 省 值2. READ UNCOMMITTED ( 允 许 读 “ 脏 ” 数 据 )3. READ COMMITTED( 禁 止 读 “ 脏 ” 数 据 ,但 允 许 不 可 重 复 的 读 )4. REPEATABLE READ ( 只 允 许 可 重 复 的 读 )25
§4 SQL 编 程 环 境一 、SQL / 宿 主 语 言 接 口宿 主 语 言 + 嵌 入 式 SQL预 处 理 程 序宿 主 语 言 + 函 数 调 用宿 主 语 言 编 译 程 序SQL 库目 标 代 码二 、 动 态 SQL26
掌 握 : 数 据 库 安 全 性 概 念 ;SQL 中 的 授 权 / 收 权 语句 ; 并 发 及 其 问 题 ; 数 据 一 致 性 与 三 级 锁协 议 ; 事 务 可 串 行 性 与 两 阶 段 锁 协 议 ; 日志 概 念 。熟 练 掌 握 : 事 务 及 其 ACID 性 质 。27