數據庫安全與保護——數據庫系統原理(本科)

第一節:數據庫完整性

一、完整性約束條件的作用對象
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 表名

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