a我考网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 137|回复: 0

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

[复制链接]
发表于 2012-8-4 14:06:19 | 显示全部楼层 |阅读模式
终于开始学习oracle了,在电脑上成功安装了oracle9i
& p% Q: n/ g0 B+ ~8 y  今天学习的是oracle的权限管理% D( B: m5 [* o, n
  首先在开始--》运行——》cmd,然后输入 sqlplus sys/密码 as sysdba6 ^5 U" w" v( P  B: {7 N' v
  以sys权限登陆进去
5 S( H4 r. q; z# A  然后可以进行操作、:: e5 i7 D5 s# I; W
  创建用户 create user test indentified by test;1 X0 S: P$ Y0 o( W$ h- k/ f- E. r
  这样就创建了一个用户名密码都为test的用户( `2 B. f8 q+ D; {% q. o/ O
  但这个时候test还是不能登陆成功的,我们需要赋予相应的权限$ L" G) z4 P8 p: H+ g3 R. T6 s
  首先赋予create session的权限
9 t$ c$ h/ _9 m, Q9 H  grant create session to test;4 O2 h; u& Q) M, {* Q' [
  这样test用户就能成功登陆进去5 s$ r. ^* F6 z# F8 O. v* E
  但是此时用户还是不能创建表 我们需要赋予用户创建表的权限:
0 T% i# ?6 b2 z/ Y2 p  grant create table to test;0 b& |6 Y: u& {! c) y0 K
  但是用户此时还不能创建表 因为需要有使用表空间的权限(相当于 用户有了进房间的钥匙 但是没有进大门的钥匙。。。)! f0 \' B8 Q% }5 z6 ?* A+ U3 L
  所以也应该赋予相应的权限- ~( G7 G; a( q* D) i% L
  grant unlimited tablespace to test;
& z+ A( K' Q8 t1 T0 E" y; L  这个时候用户就拥有了创建表的权限 由于表是用户test的 相应的他就拥有了对创建的表的增删查改的权限了
( b# w9 D5 Z1 p  ], G# D- L  我们要查看用户拥有什么权限可以通过查询一个系统的视图(数字字典): P9 L* n( U, W- F. w% }
  select * from user_sys_privs;
$ G$ V. d9 Z" V* }3 N4 c/ Q+ I  这样就可以知道当前用户的权限: R: i% v+ K: _; y. `
  撤销权限 revoke create table from test;
/ C8 y, |3 ?$ }" B9 Z& z/ c  场景:
+ }' w, Z. ~) a/ M  用户test 用户test13 h" [. @/ X7 i3 B" |* k
  test1的用户创建了个表mytab 并且插入了一些数据
# ?' k- Q6 r1 U1 h2 ~) }$ g  那么 test用户是否可以访问到test1的mytab怎么访问?( y$ |, e& O' p, |
  答:不可以,必须先授权& S+ V8 Z# P* {7 @# b
  test1必须授权给test :grant select on mytab to test;9 M8 X) p9 D' O; f0 b1 F1 p1 D: ^
  那么这个时候test可以通过 select * from test1.mytab;来访问mytab中的数据0 i) u3 R$ q  x& f. e) \& W
  如果想把某个表(对象)的所有权限都赋予给test那么可以:
2 ]4 g2 |$ L* V5 [0 Q  grant all on mytab to test;
. k- D  i% j) d" D7 L( z! m  撤销所有权限
5 |* m: P1 ~& N7 k' G5 Z5 v! {  revoke all on mytab to test;
; L. A6 o( Y, g2 j9 w0 d1 m  总结2 w; W/ E, F% N+ x* Z4 W; i" ?7 D
  对于系统权限由sys来做* W( n; b+ z6 ^4 d: L! P7 H; F  P
  对于对象权限由 谁拥有谁授权+ c8 a* G1 G% I
  系统权限:; e, x; W0 K0 I: P6 [
  grant create session to test;
6 [; @2 m7 H# i2 t# W( R/ y2 g  grant create table to test;
$ H/ ~5 K( W4 N/ P  @2 A  grant unlimited tablespace to test;* l3 X  Y6 M- [" ^) X4 \" e* G% q
  revoke create session from test;
1 n2 y/ t; q1 L8 o5 m& |' _2 j8 }  revoke create table from test;
7 _& {; V+ E! @0 V9 w  revoke unlimited tablespase from test;
! |5 {9 o- E% F! T; f6 x0 l  grant create session to public; //表示把创建表的权限赋予所有人; E- p* S7 N6 m" \5 C4 E. o3 o
  select * from user_sys_privs; //返回当前用户的所有系统权限
! Z# n, b& Z# a; W  对象权限
6 t; J, L! L' _7 p* l3 f  grant select on mytab to test;
& C2 Y$ L: ]  Y  grant all on mytab to test;4 H2 w, n9 @; K7 [
  revoke select on mytab from test;
/ p* U6 z9 O/ ?/ E5 K  revoke all on mytab from test;! p5 D. J8 N* w* O5 [/ b( ]8 P
  select * from user_tab_privs; //返回当前用户所有的对象权限
& M1 G0 j1 v4 B% }' {" l5 k' X2 o! x  对象权限可以控制到列6 r) J5 A  M: p- c, ]
  grant update(name) on mytab to test;  C4 r2 r: u0 h0 c, L2 m, Q5 \
  grant insert(id) on mytab to test;4 k# |5 B3 S6 ^/ q! n- ]
  select * from user_col_privs;
0 E  c: _- k2 y% N2 }7 f9 u  注意、:查询和删除不能控制到列% |# e$ l; |3 y' h0 V; K* e
  需要有commit的 insert update insert
# m2 {' e) Q, w- m8 O( E: N  权限的传递
- R" \+ j* B, s2 f6 I- m  系统权限的传递:+ Q5 z* U6 @3 b5 U
  grant alter table to A with admin option;+ p6 g( m% a' d1 A( k9 ]8 R
  那么A可以通过把该权限传递给B,如果想B也可以传递下去那么可以也带上with admin option0 |. @( r) H, [' E* O
  grant alter table to B;
6 n8 x* m( |* h; `- [8 O  对象权限的传递:
8 |: j4 i4 C1 K! z  grant select on mytab to A with grant option;
( s5 B5 j% h5 w+ _, X# J' o  那么A可以把在表mytab的select权限赋予给B,如果B想也能传递该select权限也可以带上with grant option
: I* B# N1 Q0 A' }6 e; b  X7 g  grant select on mytab to B;
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-28 06:34 , Processed in 0.878217 second(s), 22 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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