MySQL 筆記7 -- 許可權操作與檢視
阿新 • • 發佈:2018-11-30
MySQL 筆記7 – 許可權操作與檢視
MySQL 系列筆記是筆者學習、實踐MySQL資料庫的筆記
課程連結: MySQL 資料庫基礎入門教程
參考文件:
MySQL 官方文件
SQL 教程
一、許可權操作
1、許可權
- 限制使用者對資料庫進行的操作型別
- root 管理員擁有全部許可權,可以為每個使用者設定不同的許可權
- 在MySQL中,可以設定全域性許可權,指定資料庫許可權,指定表許可權,指定欄位許可權
2、許可權類別
許可權類別 | 說明 |
---|---|
CREATE | 建立資料庫、表或索引許可權 |
DROP | 除資料庫或表許可權 |
ALTER | ALTER更改表,比如新增欄位、索引等 |
DELETE | 刪除資料許可權 |
INDEX | 索引許可權 |
INSERT | 插入許可權 |
SELECT | 查詢許可權 |
UPDATE | 更新許可權 |
CREATE VIEW | 建立檢視許可權 |
EXECUTE | 執行儲存過程許可權 |
3、許可權命令
功能 | 命令 |
---|---|
建立使用者 | CREATE USER ‘使用者名稱’@‘localhost’ IDENTIFIED BY ‘密碼’; |
刪除使用者 | DROP USER 使用者名稱稱 |
分配許可權 | GRANT 許可權 (columns) ON 資料庫物件 TO 使用者 IDENTIFIED BY “密碼” WITH GRANT OPTION |
重新整理配置資訊 | flush privileges; |
檢視許可權 | show grants |
檢視指定使用者的許可權 | show grants for [email protected] |
刪除許可權 | REVOKE 許可權 ON 資料庫物件 FROM 使用者; |
- WITH GRANT OPTION:能向下繼續授予許可權
- 資料庫物件:所有資料庫:.;某個資料庫:資料庫名.*;某個表:資料庫名.表名
二、檢視
1、檢視
- 檢視是一個虛擬表(引用基表,並沒有真實的資料),其內容由查詢定義
- 同真實的表一樣,檢視包含一系列帶有名稱的列和行資料
- 行和列資料來自定義檢視的查詢所引用的表,並且在引用檢視時動態生成
- 簡單的來說檢視是由select結果組成的表
2、檢視的特性
- 檢視是對若干張基本表的引用,一張虛表,查詢語句執行的結果
- 不儲存具體的資料(基本表資料發生了改變,檢視也會跟著改變)
- 可以跟基本表一樣,進行增刪改查操作(增刪改操作有條件限制)
3、檢視的作用
- 安全性:建立一個檢視,定義好該檢視所操作的資料,之後將使用者許可權與檢視繫結。grant語句可以針對檢視進行授予許可權。
- 查詢效能提高
- 提高了資料的獨立性
3、檢視命令
建立檢視:
CREATE [ALGORITHM]={UNDEFINED|MERGE|TEMPTABLE}]
VIEW 檢視名 [(屬性清單)]
AS SELECT 語句
[WITH [CASCADED|LOCAL] CHECK OPTION];
- ALGORITHM 引數
- merge:處理方式替換式,可以進行更新真實表中的資料。將檢視公式替換後,當成一個整體sql進行處理了
- TEMPTABLE:具化式,由於資料儲存在臨時表(存在記憶體)中,所以不可以進行更新操作。先處理檢視結果,後處理對檢視的查詢需求
- UNDEFINED:mysql更傾向於選擇替換方式,因為它更加有效
- WITH CHECK OPTION:更新資料時不能插入或更新不符合檢視限制條件的記錄
- LOCAL和CASCADED:決定了檢查測試的範圍,預設值為CASCADED
修改檢視:
drop view 檢視名稱;
4、檢視不可更新部分
- 聚合函式;
- DISTINCT 關鍵字;
- GROUP BY子句;
- HAVING 子句;
- UNION 運算子;
- FROM 子句中包含多個表;
- SELECT 語句中引用了不可更新檢視;
- 只要檢視當中的資料不是來自於基表,就不能夠直接修改
GOOD LUCK!