日期:2014-05-16  浏览次数:20743 次

oracle权限管理及密码丢失问题
权限管理
3个默认的用户
   sys       changge_on_install (9里面默认密码)  无密码 (ORACLE 10里面)
   system    manager                            无密码
   scott     tiger                              出于安全考虑锁定了(需要解锁)

创建用户
1,启动监听 lsnrctl start +监听名字(不写表示默认)
2,启动监听实例 oradim -starup -sid orcl
3,以管理员的身份登录 sqlplus (用户名)/(密码) as sysdba(括号部分不写表示直接使用超级用户)
4,创建用户 create user lisi identified by lisi;
5,创建用户的权限(创建用户后用户不可用,登录数据库的权限也没有,必须授权)
   grant create session to lisi;(登录数据库权限)
   grant create table to lisi;(创建表权限)
  思考:表空间是放置文件的逻辑单位,默认的表空间是可以创建表,但是该用户没有使用空间的权限!
   grant unlimited talbespace to lisi;(没有任何限制使用表空间的权限)
  
  用户登录:sqlplus lisi/lisi
  create table mytable(id int);
  insert into mytable values(1);
  select * from mytable;
   drop table mytable;/%-插入,查询,删除这个表不需要授权,该表是自己的 %/
 
  撤销权限  revoke create table from lisi;
  提供系统信息的视图,叫做数据字典。通过查询这个表,就可以查询当前的授权信息:
   select * from user_sys_privs;
   select * from user_tab_privs;(用户所有的对象权限)
  (oracle 里面有上百个权限,大家只要记住授权和撤销权限)

权限分类
对象权限和系统权限
什么是对象权限?用户创建个表是否其它用户也能访问
create wangwu identified by wangwu;(sys用户控制台)
grant create session to wangwu;
grant create table, unlimited  tablespace to wangwu;

sqlplus wangwu/wangwu
create table mytab(id int); (wangwu控制台)
insert into mytab values(1);
commit;(默认情况下手动提交)
(此时普通用户不能访问wangwu的这张表,但是最高管理员有权限)
grant select on mytab to lisi;(wangwu 将查询该表授权给lisi)
grant insert on mytab to lisi;
grant all on mytab to lisi;(表中的所有权限授权给lisi)

select * from wangwu.mytab(lisi控制台可以访问)

撤销权限:revoke all on mytab from lisi;(谁拥有,谁授权)

grant create any table to public ;(属于Public 用户既所有用户)
grant create session to public;(授权所有用户均可以登录)

select * from user_tab_privs;(用户所有的对象权限)
disconn(断开连接)
在ORACLE里面权限管理很严格,它可以把权限控制到列上面,当然只对修改和插入有效,对于查询和删除需要整行
alter table mytab add name varchar(10);
显示当前用户:
show user
权限控制到列上面: grant update(name) on mytab to lisi;
                 grant insert(id) on mytab to lisi;

set linesize 400
(注意:命令行-属性-布局-宽度-300 默认是80,窗口本身很窄,照样会换行)

update wangwu.mytab set name='lihuoming',id=5 where id =1;
insert into wangwu.mytab (id) values (4);

权限传递
系统权限:
grant alter any table to lisi;修改任意表权限,但lisi不能授权给其他用户;
grant alter any table to lisi with admin option;可以授权给其它用户
对象权限:
grant select on A to lisi with grant option;

角色管理:(角色就是权限的集合)
create role myrole;
grant create session to myrole;
grant create table to myrole;

create user zhangsan identified by zhangsan;
grant myrole to zhangsan;
注意:有些权限很高很特殊,不能放在角色里面。比如:
      grant unlimited tablespace to myrole;(出错,只能授予给用户)
      可能导致所有的表空间都可以被所有的用户使用
      create table  create any table
     [alter table] alter any table <