文章詳情頁
Oracle數(shù)據(jù)操作和控制語言詳解(三)
瀏覽:132日期:2023-11-17 16:34:26
建立和修改用戶CREATE USER 語句將建立一個(gè)用戶。當(dāng)一個(gè)用戶連接到Oracle數(shù)據(jù)庫時(shí),它必須被驗(yàn)證。 ORACLE中驗(yàn)證有三種類型: Database external Global缺省是數(shù)據(jù)庫驗(yàn)證,當(dāng)用戶連接到數(shù)據(jù)庫時(shí),oracle將檢測用戶是否是數(shù)據(jù)庫的合法用戶,并且要提供正確的passWord.external驗(yàn)證,oracle將只檢測用戶是否是合法用戶,password已經(jīng)被網(wǎng)絡(luò)或系統(tǒng)驗(yàn)證了。global驗(yàn)證也是只檢測是否是合法用戶,password由oraclesecurity server驗(yàn)證。Database驗(yàn)證用戶賬號(hào)數(shù)據(jù)庫驗(yàn)證賬號(hào)是張好的缺省類型,也是最普通的類型。建立一個(gè)賬號(hào)是piyush,口令是welcome的賬號(hào),只需執(zhí)行下面的命令: CREATE USE piyush IDENTIFIED BY welcomepiyush可以通過下面的語句將口令改變?yōu)閟araswatt: ALTER USER piyush IDENTIFIED BY saraswati;外部驗(yàn)證用戶賬號(hào)用戶賬號(hào)進(jìn)入數(shù)據(jù)庫時(shí)可以不提供口令,這種情況下代替數(shù)據(jù)庫識(shí)別口令的是客戶端操作系統(tǒng)。外部驗(yàn)證賬號(hào)有時(shí)也叫OPS$賬號(hào),當(dāng)他們最初在oracle6開始介紹時(shí),oracle賬號(hào)都有要害字前綴OPS$,這也就是為什么init.ora 參數(shù)os_authent_prefix是OPS$--默認(rèn)特征與oracle6保持一致。os_authent_prefix定義的字符串必須被預(yù)處理為用于Oracle外部識(shí)別賬號(hào)的操作系統(tǒng)賬號(hào)名。創(chuàng)建操作系統(tǒng)用戶appl的語句是: CREATE USER ops$appl IDENTIFIED EATERNALLY但在通常情況下,os_authent_prefix將被設(shè)置為空,像下面這樣: CREATE USER appl IDENTIFIED EATERNALLY這樣效果是一樣的,要害字IDENTIFIED EXTERNALLY告訴ORACLE這是一個(gè)外部識(shí)別賬號(hào)。GLOBAL用戶賬號(hào)GLOBAL類型的用戶賬號(hào)數(shù)據(jù)庫不檢測口令,而是由X.509目錄服務(wù)器檢測口令。創(chuàng)建一個(gè)GLOBAL類型的用戶賬號(hào)的方法是: CREATE USER scott IDENTIFIED GLOBALLY AS 'CN=scott,OU=divisional,O=sybex,C=US'要害字IDENTIFIED GLOBALLY AS表示建立的是一個(gè)GLOBAL類型的用戶賬號(hào).創(chuàng)建和更改用戶賬號(hào)CREATE USER 用于建立用戶賬號(hào)和給用戶賬號(hào)的屬性賦值。ALTER USER用于更改用戶賬號(hào)和屬性。但CREATE USER語句必須包括用戶名和口令。有部分屬性能用CREATER USER和ALTER USER語句設(shè)置,下面對(duì)是這些的屬性具體描述:給用戶分配缺省表空間表空間(tablespace)是放置表、索引、叢等用戶對(duì)象的。假如在create user語句中沒有包含表空間,那么缺省的是系統(tǒng)表空間。 CREATE USER piyush IDENTIFIED BY saraswatiDEFAULTE TABLESPACE user_data;ALTER USER manoj DEFAULTE TABLESPACE dev1_data;給用戶分配臨時(shí)表空間臨時(shí)表空間,顧名思義是臨時(shí)存放表、索引等用戶對(duì)象的臨時(shí)段。建立方法一樣 CREATE USER piyush IDENTIFIED BY saraswatiTemporary TABLESPACE user_data;ALTER USER manoj Temporary TABLESPACE dev1_data;給用戶分配表空間的使用定額使用定額限制用戶在表空間中使用磁盤的數(shù)量。定額可以按字節(jié)、千字節(jié)、兆字節(jié)或者無限制來制定。 CREATE USER piyush IDENTIFIED BY saraswatiDEFAULT TABLESPACE user_dataQUOTA UNLIMITED ON user_dataQUOTA 20M ON tools;ALTER USER manoj QUOTA 2500K ON tools;給用戶分配一個(gè)簡表簡表可以限制用戶在會(huì)話時(shí)消耗的資源。這些資源包括:連接數(shù)據(jù)庫的時(shí)間,空閑時(shí)間,每次會(huì)話的邏輯讀數(shù)據(jù)的數(shù)量等等,缺省的簡表對(duì)資源無限制。 CREATE USER piyush IDENTIFIED BY saraswatiPROFILE TABLESPACE user_data;ALTER USER manoj Temporary TABLESPACE dev1_data;為用戶響應(yīng)指定角色這個(gè)屬性只能由ALTER USER語句設(shè)置,試圖用CREATE USER語句設(shè)置將回返回一個(gè)例外。 ALTER USER manoj DEFAULT ROLE ALL EXCEPT salary_adm;為用戶的password設(shè)定到期時(shí)間以便在用戶下次登錄時(shí)更改當(dāng)用戶的password到期,在下一次登錄時(shí)將強(qiáng)迫修改password,oracle提示用戶輸入舊的password,然后輸入新的password。這項(xiàng)功能常用于新用戶,當(dāng)新用戶用缺省的password登錄時(shí)必須修改立即修改password. ALTER USER manoj IDENTIFIED BY welcome;ALTER USER manoj PASSWORD EXPIRE;鎖定賬號(hào),是用戶不能登錄 ALTER USER ql AC COUNT LOCK 對(duì)賬號(hào)解鎖,以便用戶能登錄數(shù)據(jù)庫 ALTER USER ql ACCOUNT UNLOCK權(quán)限和角色權(quán)限答應(yīng)用戶訪問屬于其它用戶的對(duì)象或執(zhí)行程序,ORACLE系統(tǒng)提供三種權(quán)限: Object 對(duì)象級(jí) System 系統(tǒng)級(jí) Role 角色級(jí)這些權(quán)限可以授予給用戶、非凡用戶public或角色,假如授予一個(gè)權(quán)限給非凡用戶'Public'(用戶public是oracle預(yù)定義的,每個(gè)用戶享有這個(gè)用戶享有的權(quán)限),那么就意味作將該權(quán)限授予了該數(shù)據(jù)庫的所有用戶。 對(duì)治理權(quán)限而言,角色是一個(gè)工具,權(quán)限能夠被授予給一個(gè)角色,角色也能被授予給另一個(gè)角色或用戶。用戶可以通過角色繼續(xù)權(quán)限,除了治理權(quán)限外角色服務(wù)沒有其它目的。權(quán)限可以被授予,也可以用同樣的方式撤銷。建立和使用角色如前所訴,角色存在的目的就是為了使權(quán)限的治理變得輕松。建立角色使用CREATE ROLE語句,他的語法如下: CREATE ROLE role_name IDENTIFIED BY passwordCREATE ROLE role_name IDENTIFIED EXTERNALLYCREATE ROLE role_name IDENTIFIED GLOBALLY缺省情況下建立的角色沒有password或者其他的識(shí)別。假如使用IDENTIFIED BY 子句建立,那么角色不會(huì)自動(dòng)響應(yīng),必須用SET ROLE激活。 SET ROLE role_name IDENTIFIED BY passwordEXTERNALLY和GLOBALLY類型的角色由操作系統(tǒng)和ORACLE Service server驗(yàn)證。通常用戶需要權(quán)限修改應(yīng)用程序中使用的表單中的數(shù)據(jù),但是只有在應(yīng)用程序運(yùn)行時(shí)而不是在使用ad hoc工具時(shí),這種上下文敏感安全可以通過有PASSWORD的角色來實(shí)現(xiàn)。當(dāng)用戶在應(yīng)用程序內(nèi)部連結(jié)數(shù)據(jù)庫時(shí),代碼將執(zhí)行SET ROLE命令,通過安全驗(yàn)證。所以用戶不需要知道角色的password,也不需要自己輸入SET ROLE命令。對(duì)象權(quán)限對(duì)象權(quán)限就是指在表、視圖、序列、過程、函數(shù)或包等對(duì)象上執(zhí)行非凡動(dòng)作的權(quán)利。有九種不同類型的權(quán)限可以授予給用戶或角色。如下表: 權(quán)限 ALTER DELETE EXECUTE INDEX INSERT READ REFERENCE SELECT UPDATE Directory no no no no no yes no no no function no no yes no no no no no no procedure no no yes no no no no no no package no no yes no no no no no no DB Object no no yes no no no no no no Libary no no yes no no no no no no Operation no no yes no no no no no no Sequence yes no no no no no no no no Table yes yes no yes yes no yes yes yes Type no no yes no no no no no no View no yes no no yes no no yes yes對(duì)象由不止一個(gè)權(quán)限,非凡權(quán)限ALL可以被授予或撤銷。如TABLE的ALL權(quán)限就包括: SELECT,INSERT,UPDATE和DELETE,還有INDEX,ALTER,和REFERENCE。如何看這個(gè)表我們以ALTER權(quán)限為例進(jìn)行說明ALTER權(quán)限答應(yīng)執(zhí)行ALTER TABLE和LOCK TABLE操作,ALTER TABLE可以進(jìn)行如下操作:. 更改表名. 增加或刪除列. 改變列的數(shù)據(jù)類型或大小. 將表轉(zhuǎn)變?yōu)榉謪^(qū)表在SEQUENCE上的ALTER權(quán)限答應(yīng)執(zhí)行ALTER Sequence語句,重新給sequence分配最小值、增量和緩沖區(qū)大小。系統(tǒng)權(quán)限系統(tǒng)權(quán)限需要授予者有進(jìn)行系統(tǒng)級(jí)活動(dòng)的能力,如連接數(shù)據(jù)庫,更改用戶會(huì)話、建立表或建立用戶等等。你可以在數(shù)據(jù)字典視圖SYSTEM_PRIVILEGE_MAP上獲得完整的系統(tǒng)權(quán)限。對(duì)象權(quán)限和系統(tǒng)權(quán)限都通過GRANT語句授予用戶或角色。需要注重的是在授予對(duì)象權(quán)限時(shí)語句應(yīng)該是WITH GRANT OPTION子句,但在授予系統(tǒng)權(quán)象時(shí)語句是WITH ADMIN OPTION,所以在你試圖授予系統(tǒng)權(quán)限時(shí),使用語句WITH GRANT OPTION系統(tǒng)會(huì)報(bào)告一個(gè)錯(cuò)誤:ONLY ADMIN OPTION can be specified。在考試中要非凡注重這個(gè)語法和錯(cuò)誤信息。角色和角色權(quán)限角色權(quán)限就是將屬于用戶的權(quán)限授予一個(gè)角色。任何權(quán)限都可以授予給一個(gè)角色。授予系統(tǒng)權(quán)限給被授予者必須使用WITH_ADMIN_OPTION子句,在會(huì)話期間通過SET ROLE語句授予或撤銷角色權(quán)限。然而,角色權(quán)限不能依靠存儲(chǔ)在SQL中的權(quán)限。假如函數(shù)、程序、包、觸發(fā)器或者方法使用另一個(gè)計(jì)劃擁有的對(duì)象,那么就必須直接給對(duì)象的擁有者授權(quán),這是因?yàn)闄?quán)限不會(huì)在會(huì)話之間改變。授予和撤銷權(quán)限 給用戶或者角色授予權(quán)限使用GRANT 語句,GRANT語句的語法如下: GRANT ROLE(或system privilege) TO user(role,Public) WITH ADMIN OPTION(可選)對(duì)象權(quán)限被授予 WITH GRANT OPTION,權(quán)限和數(shù)據(jù)字典數(shù)據(jù)字典是ORACLE存儲(chǔ)有關(guān)數(shù)據(jù)庫結(jié)構(gòu)信息的地方,數(shù)據(jù)本身存放在其他地方,數(shù)據(jù)字典由表和視圖組成。在考試中關(guān)于數(shù)據(jù)字典最輕易考的內(nèi)容是:查看那一類權(quán)限已經(jīng)被授予。比如DBA_TAB_PRIV包含了用戶授予給另一用戶的對(duì)象權(quán)限和在授予時(shí)是否帶有WITH GRANT OTPION子串的信息。注重DBA_TAB_PRIV不僅僅包含了對(duì)表的權(quán)限的關(guān)系,他還包括函數(shù)、包、隊(duì)列等等上的權(quán)限的關(guān)系。下表列出了所有的權(quán)限和角色的數(shù)據(jù)字典視圖:表: 權(quán)限的數(shù)據(jù)字典視圖 視圖 作用 ALL_COL_PRIVS 表示列上的授權(quán),用戶和PUBLIC是被授予者 ALL_COL_PRIVS_MADE 表示列上的授權(quán),用戶是屬主和被授予者 ALL_COL_RECD 表示列上的授權(quán),用戶和PUBLIC是被授予者 ALL_TAB_PRIVS 表示對(duì)象上的授權(quán),用戶是PUBLIC或被授予者或用戶是屬主 ALL_TAB_PRIVS_MADE 表示對(duì)象上的權(quán)限, 用戶是屬主或授予者 ALL_TAB_PRIVS_RECD 表示對(duì)象上的權(quán)限, 用戶是PUBLIC或被授予者 DBA_COL_PRIVS 數(shù)據(jù)庫列上的所有授權(quán) DBA_ROLE_PRIVS 顯示已授予用戶或其他角色的角色 DBA_SYS_PRIVS 已授予用戶或角色的系統(tǒng)權(quán)限 DBA_TAB_PRIVS 數(shù)據(jù)庫對(duì)象上的所有權(quán)限 ROLE_ROLE_PRIVS 顯示已授予用戶的角色 ROLE_SYS_PRIVS 顯示通過角色授予用戶的系統(tǒng)權(quán)限 ROLE_TAB_PRIVS 顯示通過角色授予用戶的對(duì)象權(quán)限 SESSION_PRIVS 顯示用戶現(xiàn)在可利用的所有系統(tǒng)權(quán)限 USER_COL_PRIVS 顯示列上的權(quán)限,用戶是屬主、授予者或被授予者 USER_COL_PRIVS_MADE 顯示列上已授予的權(quán)限,用戶是屬主或授予者 USER_COL_PRIVS_RECD 顯示列上已授予的權(quán)限,用戶是屬主或被授予者 USER_ROLE_PRIVS 顯示已授予給用戶的所有角色 USER_SYS_PRIVS 顯示已授予給用戶的所有系統(tǒng)權(quán)限 USER_TAB_PRIVS 顯示已授予給用戶的所有對(duì)象權(quán)限 USER_TAB_PRIVS_MADE 顯示已授予給其他用戶的對(duì)象權(quán)限,用戶是屬主 USER_TAB_PRIVS_RECD 顯示已授予給其他用戶的對(duì)象權(quán)限,用戶是被授予者
標(biāo)簽:
Oracle
數(shù)據(jù)庫
排行榜
