oracle10g权限与角色

3个默认的用户:
   sys orcl [as sysdba]
   system orcl
   scott tiger
创建用户:
         create user mymoti identified by wxwpxh ;

PRIVILEGE:权限
系统权限:
         grant(revoke) create session to(from) gis;
         grant(revoke) create table to(from) gis;
         grant(revoke) unlimited tablespace to(from) gis;
         grant create seesion  to public; #将权限授予所有用户。
         select * from user_sys_privs; 查看当前用户的系统权限。

对象权限:
         grant(revoke) select on mytable to(from) gis; 
   grant(revoke) all on mytable to(from) gis; 
         select * from user_tab_privs; #查看当前用户的表的对象权限:

对象权限可以控制到列(只能插入和更新控制到列): 
          select * from user_col_privs; #查看当前用户的列的对象权限:
      1) grant update(name) on mytable to sagittys;   #在gis用户上将mytable表的name列更新权限给sagittys用户
         update gis.mytable set name='laowang' where id=1; 
   commit;
      2) grant insert(id) on mytable to sagittys;
            insert into gis.mytable(id) values(7);
         

GRANTEE OWNER TABLE_NAME    GRANTOR     PRIVILEGE                     GRA HIE
----- ------------------------------ ------------------------------ --
GIS         SAGITTYS     SA            SAGITTYS FLASHBACK                   NO NO
GIS         SAGITTYS     SA          SAGITTYS      DEBUG                          NO NO
GIS         SAGITTYS     SA      SAGITTYS      QUERY REWRITE            NO NO
GIS         SAGITTYS     SA        SAGITTYS      ON COMMIT REFRESH      NO NO
GIS         SAGITTYS     SA          SAGITTYS      REFERENCES                  NO NO
GIS   SAGITTYS     SA      SAGITTYS      UPDATE    #更新              NO NO
GIS   SAGITTYS     SA      SAGITTYS      SELECT    #查询              NO NO
GIS   SAGITTYS     SA      SAGITTYS      INSERT    #插入               NO NO
GIS   SAGITTYS     SA        SAGITTYS      INDEX     #索引                NO NO
GIS         SAGITTYS     SA          SAGITTYS DELETE    #删除               NO NO
GIS   SAGITTYS     SA        SAGITTYS ALTER     #修改                NO NO
(在CMD中默认宽度到头了则不会规则的显示,此时将宽度设为400,set linesize 400,就ok了)

语言分类:
1、 DLL,数据定义语言
     CREATE,CREATE TABLE abc(a varchar(10),b char(10));
     ALTER,ALTER TABLE abc ADD c NUMBER; 加一个c的字段,数据符为NUMBER。ALTER TABLE abc DROP COLUMN c;
     DROP,DROP TABLE abc
2、 DCL,数据控制语言
     GRANT, 授权 GRANT SELECT ON dept TO sde;#让sde用户可以选择dept表
     REVOKE,授权收回 REVOKE SELECT ON dept FROM sde;
3、 DML,数据操作语言 (增删改查)   最后需要保存提交:commit;
     SELECT, SELECT * FROM ABC;
     INSERT, INSERT INTO ABC(A,B) VALUES(‘XF’,’SDE’);
     DELETE, DELETE FROM ABC; 删除表中所有数据。
                     DELETE FROM ABC WHERE A =’ORCL’;
     UPDATE, UPDATE ABC SET B=’AAA’; 将表中B的数值全部改成AAA
                 UPDATE ABC SET B=’AAA’ WHERE A =’XF’;将A=XF行B值修改。

权限传递:
   1、系统权限传递
     SYS用户将系统权限授予A用户,A用户将此权限授予B用户;
     grant alter any table to gis;
     如下显示:
     USERNAME    PRIVILEGE         ADM
    -------------------------- ----------
     GIS        ALTER ANY TABLE    NO 
     #admin为no,说明不带有管理员选项,不能传递系统权限。
     作出如下更改:
     grant alter any table to gis with admin option;
     则显示:
     USERNAME    PRIVILEGE         ADM
    -------------------------- ----------
     GIS        ALTER ANY TABLE    YES
     #admin为yes,此时带有管理员选项,可以传递系统权限。
     同理,通过grant alter any table to sagittys with admin option;
           可以让sagittys继续传递权限
     此时,如果sys将授予GIS用户的ALTER ANY TABLE权限撤销了,sagittys依然拥有该权限。

   2、对象权限传递
     A用户将对象权限授予B,B用户将此权限授予C用户;
     与系统权限传递类似,用grant select on mytable to sagittys with grant option;
                         可以将对象权限传递下去。
      但是,如果GIS用户将select on mytable权限撤销了,则之后传递的用户都没有该权限了。

角色管理
   角色:权限的集合
   create role myrole;      创建角色;   drop role myrole; 删除角色;                     
   grant create session to myrole; 
   grant create table to myrole;    #给角色授权
   grant myrole to gis;                #将角色授予用户。
   注意:有些系统权限很高很特殊,无法直接赋予角色。
         如:unlimited tablespace 
   create table(包含下2行权限) create any table; 
   alter table (无此权限)              alter any table
   drop table (无此权限)             drop any table  
   表是属于某一个用户的,而角色不属于任意一个用户,是大家公用的。

丢失管理员的密码怎么办?
     用sys管理员修改普通户用密码:
         alter user scott identified by tiger; #将scott用户密码改为tiger。
    
数据库的三种验证机制:
           1、操作系统验证
           2、密码文件验证
         3、数据库验证
     具有sysoper和sysdba用户可以在数据库还没启动的时候就连入数据库将之启动。
     它们采用的是操作系统验证和密码文件验证。

   linux下oracle的启动过程:
     1、lsnrctl start #启动监听,接受用户请求。
     2、sqlplus sys/orcl as sysdba #是DBA,采用操作系统验证和密码文件验证。
       在低版本的oracle中只能这样:sqlplus/nolog
                                                conn sya/orcl as sysdba;                   
     3、startup         #打开数据库实例
     如果是普通用户,则只能用数据库验证,在实例没有打开之前是不可能启动的。
   
用sysdba连接数据库时,可以不输入用户密码直接登录,如sqlplus / as sysdba
这是因为,在计算机管理--用户和组--组中的ORA_DBA中默认存在当前的操作系统登陆者。
由于sysdba采用操作系统验证和密码文件验证,因此sqlplus默认当前操作系统管理员就是
oracle的DBA,除非将ORA_DBA组中的登录用户名删除。
当将ORA_DBA组中的登录用户名删除之后,sysdba只能采用第二种验证方式,即密码文件验证。
此时如果sys的密码丢失了,
    则在E:"oracle"product"10.2.0"db_1"database中将PWDorcl.ora(密码文件)删掉
    在cmd下输入orapwd,显示出提示:
    Usage: orapwd file= password= entries= force=
    file - name of password file (mand)                设置密码文件的路径
    password - password for SYS (mand)            设置sys的密码
    entries - maximum number of distinct DBA     设置DBA权限的最大数量
    force - whether to overwrite existing file         询问是否强制覆盖,可不填写
    具体如下:
    orapwd file=E:"oracle"product"10.2.0"db_1"database"PWDorcl.ora password=orcl entries=10
    此时重新生成了密码文件。
    使用语句select * from v$pwfile_users; 可以看出在PWDorcl.ora中有多少特权用户。

完整的创建表的语句:   
create user abc identified by abc default tablespace users temporary tablespace temp quota 50m on users;

在方案中查看用户的表的信息。

删除用户的时候,如果用户下有表存在,则只能强制删除:
drop user sagittys cascade;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值