第九章 資料庫安全
9.1.1建立使用者
create user user_name identified by password
[default tablespace def_tabspace]
[temproary tablespace temp_tabspace]
乙個使用者要想連線到資料庫上,就必須向該使用者授予」建立會話」的許可權,也就是create session系統特權
grant create session to tom
9.1.2修改使用者密碼
alter user tom identified by new_password;
password 命令可以用來修改當前登入的使用者密碼,在輸入password命令之後,sql*plus就會提示先輸入原來的密碼 ,再輸入兩次新的密碼就可以了
9.1.3刪除使用者
drop user tom;
注意:如果要刪除的使用者模式中包含物件(例如表等),就必須在drop user 語句中的要刪除的使用者名稱後面加上關鍵字cascade。
常用的系統特權:
create synonym 建立同名物件。同名物件用於引用其他模式中的表
create any table在任何模式中建立表
grant 系統特權名稱 to 使用者名稱 with admin option;
這樣所授權的使用者就可以 把這種特權再授予其他使用者。
將一種特權授予public ,可以將該特權授予所有使用者。
9.2.2檢查授予使用者的系統特權
通過查詢user_sys_privs可以檢查某個使用者具有哪些系統特權。
撤銷使用者的系統特權
可以使用revoke語句撤銷某個使用者的系統特權。
connect system/manager
revoke create table from steve;
9.3物件特權
物件特權允許使用者對資料庫物件執行特定的操作,比如對錶執行dml語句。
以tom使用者身份連線到資料庫上,並向steve使用者授予特權:
connect tom/tom_password
grant select,insert,update on store.products to steve;
grant update (last_name,salary) on store.employees to steve;
此處也可以使用grant選項,這樣所授權的使用者就可以把這種特權再授予其他使用者。
grant select on store.customers to steve with grant option;
注意:當希望所授權的使用者可以將物件特權授予其他使用者時,使用grant 選項;當希望所授權使用者將系統特權授予其他使用者時,使用admin選項。
檢查已授予的物件特權
通過查詢user_tab_privs_made可以檢查某個使用者對哪些表向其他使用者開放了哪些物件特權。
通過查詢user_col_privs_made可以檢查某個使用者對哪些列物件向其他使用者開放了哪些物件特權。
檢查已接受的物件特權
通過查詢user_tab_privs_recd可以檢查某個使用者被授予了哪些表上的哪些物件特權。
通過查詢user_col_privs_recd可以檢查某個使用者被授予了哪些列的物件特權。
同名物件
connect system/manager
grant create synonym to tom
然後,connect tom/tom_password
create synonym customers for store.customers
公用同名物件
可以為表建立公用同名物件。在建立公用同名物件之後,所有的使用者都可以看到這個同名物件。
connect system/manager
grant create synonym to tom
然後,connect tom/tom_password
create public synonym products for store.products;
撤銷steve使用者對customers表的select特權
revoke select on store.customers from steve;
在撤銷steve使用者的select on store.customers 特權時----steve已經將這種特權又授予了gail-----gail也同時失去了這種特權。
然而,在撤銷使用者steve使用者的execute any procedure 特權時-----steve已經將這種特權又授予了gail----gail仍然會保留這種特權。(系統特權不刪除關聯)
角色就是一組特權,它可以分配乙個使用者或其他角色。
在增加或刪除乙個角色的某種特權時,被授予該角色的所有使用者和角色都會自動獲得新加的特權或自動失去這種特權。
通過查詢user_role_privs可以檢查已經授予乙個使用者哪些角色。
檢查授予角色的系統特權
通過查詢role_sys_privs 可以檢查已經授予乙個角色哪些系統特權。
通過查詢role_tab_privs可以檢查已經授予乙個角色哪些物件特權。
預設情況下,在將角色授予使用者時,就為該使用者啟用了這個角色。這就是說,在使用者連線到資料庫上時,就可以自動使用這個角色了。
alter role 語句可以用來對角色進行修改,使其變為非預設角色。
connect system/manager
alter user steve default role all except overall_manager;
當以steve使用者的身份連線到資料庫上時,就需要使用set role 語句啟用 overall_manager角色
connect steve/button
set role overall_manager identified by manager_password;
使用下面的語句就可以清空角色的設定:
set role none;
從角色中撤銷特權:
revoke all on products from product_manager;
刪除角色:drop role 角色名
第九章 資料安全
資料安全概述 資料庫安全 1 資料庫系統執行安全,包括其所在的主機系統安全 2 資料資訊保安,即資料安全 資料安全 指資料的完整性 可用性 保密性和可靠性 資料安全依賴於資料庫管理系統所採用的安全策略 安全模型和安全機制 資料安全所面臨的威脅 1 授權人員的非故意錯誤行為 2 社交工程 3 內部人員...
第九章 資料庫
redis 中資料庫的概念 切換資料庫的命令 select 1 資料庫鍵空間 key space redis 每個資料庫都有乙個資料庫鍵空間,資料庫鍵空間是一種字典結構 dict 字典 expires 字典 設定鍵的生存時間和過期時間 過期字典儲存鍵的過期時間 expire,pexpire,expi...
資料庫第九章總結!
第九章 關係查詢處理和查詢優化 1.查詢處理的步驟 1 查詢分析 對語句進行掃瞄 詞法分析 語法分析。2 查詢檢查 對合法查詢語句進行語義分析,根據資料字典中有關模式的定義檢查語句中的資料庫物件比如關係名 屬性名 是否存在和有效。這時的完整性檢查是初步的 靜態的檢查 3 查詢優化 分為代數優化和物理...