a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 123|回复: 0

[考试辅导] oraclegrant真的可能赋予权限吗

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
终于开始学习oracle了,在电脑上成功安装了oracle9i
! h+ r  Z9 k* G$ |" o! V# s  f  今天学习的是oracle的权限管理
+ l- \: T, H6 J+ M  首先在开始--》运行——》cmd,然后输入 sqlplus sys/密码 as sysdba, c6 w3 @: X! X
  以sys权限登陆进去
5 F9 d/ u9 }6 _# P' O  然后可以进行操作、:
  \- S# T# D. d% C0 E5 R+ K# \  创建用户 create user test indentified by test;* {9 T- A/ I' B. ?7 N
  这样就创建了一个用户名密码都为test的用户
& L4 ^# ]: P$ f: ~7 B$ ]  但这个时候test还是不能登陆成功的,我们需要赋予相应的权限
* e* E2 {7 ]- ]5 ~3 w8 _2 O  首先赋予create session的权限
/ d7 r* f  P& a0 C. s( l  grant create session to test;. ?; k2 T7 w- {. C$ q: U# V
  这样test用户就能成功登陆进去3 K: M; G0 U: [# j8 }& s5 i
  但是此时用户还是不能创建表 我们需要赋予用户创建表的权限:" s% z6 t' q: r* [& k' Z3 a3 ]
  grant create table to test;) W( J  k) Z0 M2 x4 f# d: }( o
  但是用户此时还不能创建表 因为需要有使用表空间的权限(相当于 用户有了进房间的钥匙 但是没有进大门的钥匙。。。)
- L8 x( T" o. k4 _" F1 B  所以也应该赋予相应的权限
; i1 e. o! q" L/ T$ J# T  grant unlimited tablespace to test;8 T. ?' T% a, C5 x, J1 \, v
  这个时候用户就拥有了创建表的权限 由于表是用户test的 相应的他就拥有了对创建的表的增删查改的权限了& I$ D& O. n8 F  \- }/ [' K. e
  我们要查看用户拥有什么权限可以通过查询一个系统的视图(数字字典)
1 M. o% R. [! |, n) T" O' U. l  select * from user_sys_privs;+ Y/ R6 i. C/ d( i8 o& E- J
  这样就可以知道当前用户的权限
. ?- d4 R9 \7 F% a  撤销权限 revoke create table from test;9 V4 r6 G4 w3 P' [6 \( }3 L; a
  场景:5 Y- [* O. ~" N" A1 u$ m
  用户test 用户test1$ y5 P+ {' |. C9 ~* y- a5 f
  test1的用户创建了个表mytab 并且插入了一些数据
) W  ]  C' V" x9 W. z  那么 test用户是否可以访问到test1的mytab怎么访问?8 y0 n4 J! f) H; t) |+ M+ F
  答:不可以,必须先授权
1 }9 {! `1 Q' T4 E6 a; B* S! d  test1必须授权给test :grant select on mytab to test;8 O+ R; @0 B$ D9 }  E/ M; q
  那么这个时候test可以通过 select * from test1.mytab;来访问mytab中的数据: C$ E- W8 x1 g
  如果想把某个表(对象)的所有权限都赋予给test那么可以:
! q6 M4 I- c1 e. \. ^# {3 e  grant all on mytab to test;
" }" f4 C) N& C* K' T  撤销所有权限9 n& V. T* F+ w7 V* Q) y3 G
  revoke all on mytab to test;# z+ o+ A* m7 ]6 w) M% z7 L
  总结2 c8 U3 Z  Y" z# B9 J
  对于系统权限由sys来做
* n! S3 V4 j2 ^  对于对象权限由 谁拥有谁授权
4 w3 C; V+ _: s; J  系统权限:
+ w* F* M% k) j" b% [$ j1 G) D9 ~5 ^  grant create session to test;
$ J' C* \/ Y2 {. v% N  [/ @  grant create table to test;1 v' i/ t% o9 x$ e9 Q
  grant unlimited tablespace to test;* }: x- m6 @8 X* [% S$ W& {
  revoke create session from test;
$ x, [, f" B( Y) I& @' {  revoke create table from test;: V# {& E) K* G
  revoke unlimited tablespase from test;4 @9 w* n8 E5 p' Z
  grant create session to public; //表示把创建表的权限赋予所有人* J2 ?8 ~; ?6 B6 ~! E7 a
  select * from user_sys_privs; //返回当前用户的所有系统权限
, X( g. B: s( }7 r  R9 C  对象权限
/ V6 }6 @0 V8 e3 \4 }  grant select on mytab to test;
- J, S% G+ G  h" Y  grant all on mytab to test;
/ d' E! x, \. ?  revoke select on mytab from test;/ X# d; c8 }8 M1 h  H
  revoke all on mytab from test;
. x2 c  k# O- i# T7 [  select * from user_tab_privs; //返回当前用户所有的对象权限$ ?" |+ o3 n1 \
  对象权限可以控制到列. n! X9 P. ?' S/ y3 x7 D; j  Y; l( M
  grant update(name) on mytab to test;* `' X9 l/ H, e* y+ Y- f% U# S1 b
  grant insert(id) on mytab to test;8 _. Y6 r" Q8 V# F
  select * from user_col_privs;
  K! H3 H3 M8 `6 a# T1 [; R  注意、:查询和删除不能控制到列1 i0 V8 a& N8 c6 H* {7 J! k
  需要有commit的 insert update insert' Z1 K# W7 G& x6 c
  权限的传递" R7 [. `% Y& K( Z) Q
  系统权限的传递:' W: c1 i7 R; G$ z6 _) Z1 O
  grant alter table to A with admin option;. G/ o) P+ @8 q
  那么A可以通过把该权限传递给B,如果想B也可以传递下去那么可以也带上with admin option% M: i; b0 A- q. s4 \- K
  grant alter table to B;* {! [9 \! Y, Y% {
  对象权限的传递:
0 o/ W3 ~% t0 m6 C6 m" R$ ]  grant select on mytab to A with grant option;
. `; a5 ?9 S; G& g1 ^2 H+ l  那么A可以把在表mytab的select权限赋予给B,如果B想也能传递该select权限也可以带上with grant option& R' N( H4 R& e) O7 y& f6 d- d
  grant select on mytab to B;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|Woexam.Com ( 湘ICP备18023104号 )

GMT+8, 2024-5-7 16:27 , Processed in 0.173232 second(s), 21 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表