您的位置:首页 > 数据库 > Oracle

oracle 10g的权限管理

2009-10-25 21:38 337 查看
3个默认用户
sys (口令123456)[as sysdba]
system manager
scott tiger
创建用户
create user lisi identified by lisi;
create user wangwu identified by wangwu;
系统权限
grant create session to lisi;
grant create table to lisi;
grant unlimited tablespace to lisi;

revoke create session from lisi;
revoke create table from lisi;
revoke unlimited tablespace from lisi;

grant create session to public;(所以用户都拥有此权限)
grant create anytable to public;
select * from user_sys_privs;(当前用户拥有哪些系统权限)

对象权限
grant select on mytab to lisi;
grant all on mytab to lisi;

revoke select on mytab from lisi;
revoke all on mytab from lisi;

set linesize 400
select * from user_tab_privs;(当前用户拥有那些对象权限)

alter table mytab add name varchar(10);
sql>disconn(资源正忙,释放资源,不行的话,提交一下就可以了。commit结束事务,从新执行一次)
insert into mytab values(1,'zhang');
sql>show user(显示当前用户)
grant update(name) on mytab to lisi;(把更新的权限赋给lisi)
grant insert(id) on mytab to lisi;(把只能插入id这列赋给lisi)
update wangwu.mytab set name='aaa' where id=1;(lisi对wangwu表的列的更新,在commit一下)
对象权限可以控制到列
grant update(name) on mytab to lisi;
grant insert(id) on mytab to lisi;
注意:查询和删除不能控制到列。
select * from user_col_privs;(当前用户对列拥有那些对象权限)

授权和撤销权限时不用提交。
插入更新和删除需要提交。
ddl(数据定义语言,创建表,删除表)
dml(数据操纵语言,增,删,改)
dcl(控制语言)

权限传递
sys--a--b
a--b--c
show user(显示当前用户)
grant alter any table to lisi;(sys授予lisi,但lisi不能赋予另外一个用户)
grant alter any table to lisi with admin option;
grant alter any table to wangwu with admin option;(表示wangwu可以把修改的权限赋给其他用户)

对象权限
create table a(id int);(sys创建)
grant select On a to lisi;(把查询赋给lisi)
grant select On a to lisi with grant option;()
grant select On sys.a to wangwu;(lisi赋给wangwu的)
grant select On sys.a to wangwu with grant option;(lisi赋给wangwu,wangwu拥有此权限,wangwu赋给其他用户的)

角色管理
create role myrole;
grant create session to myrole;
grant create table to myrole;(把session,table放到role里面)
create user zhangsan identified by zhangsan;
grant myrole to zhangsan;(角色赋予zhangsan)
drop role myrole;(删除角色)

有些权限特殊,不能放到角色里,有些权限很高,很特殊只能直接赋予用户,不能放到角色里
例如:
grant unlimited tablespace to myrole;
(出错:无法将unlimited tablespace 授予角色)
create table (用户创建表,只能给自己创建表)create any table(不仅给自己创建表,还可以给其他用户创建表)create table lisi.a(id int);首先sys用户给lisi 分配一个表空间权限 :grant unlimited tablespace to lisi;

[alter table]没有这个权限 alter any table
[drop table ]没有这个权限 drop any table
grant delete any table to myrole;
表是属于某一个用户的。
角色不属于某个用户。

丢失管理员密码怎么办?
普通用户密码丢了怎么办?(用sys登录alter user scott identified by tiger;

数据库的三种验证机制
操作系统验证
密码文件验证
数据库验证
linux下oracle的启动过程
lsnrctl start
sysplus sys/oracle as sysdba
startup
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: