Oracle权限控制笔记

原创 2012年03月25日 22:10:02

系统权限

三个默认用户:
用户   密码
sys(网络管理员) change_on_install [as sysdba](连接数据库所用)
system(本地管理员) manager
scott(普通用户) tiger
上面为oracle9i中的用户密码,如果是10i则前两个用户由自己在安装时指定。


创建自己的用户
出现协议适配器错误:启动两个服务(监听、实例)
通过命令启动以上两个服务:
监听:lsnrctl start (监听名称,可不写)
实例:oradim -starup -sid orcl


1、通过超级用户登录:
sqlplus [username]/[password] as sysdba  此用户为"sys"
2、创建用户:
create user zlb identified by zlb(密码)


使用用户:
先授会话权限:
grant create session to zlb;
再登陆:
sqlplus zlb/zlb


创建表:
先分配权限:
grant unlimited tablespace to zlb; 
grant create table to zlb;
创建表:
create table mytable (id int);
插入:
insert into mytable values(1);

说明:当一个用户拥有了创建表的权限时,他就拥有了这张表所有操作的权限。

撤销表的权限:
revoke create table from zlb;
查找用户拥有哪些系统权限:
select * from user_sys_privs;

如果想把某个权限授予所有用户:
grant create any table to public;(把创建表的权限授予所有用户)


对象权限

用户之间不能相互访问;
sys有权限访问所有用户的权限。
在oracle中要通过手动提交,即当你插入一条数据时,要通过“commit”提交以下。


如果要想用户之间能够相互访问,可通过授权来实现:
grant select on mytable to lb;(表示zlb把查询表的权限授予lb),其他的增删改权限授予同上。


如果想把所有的权限授予lb,写法为:
grant all on mytable to lb;
撤销所有权限:revoke all on mytable from lb;


查找用户拥有哪些表权限:
select * from user_tab_privs;


断开连接:disconn;启用连接:connzlb/zlb


权限可以控制到列上,如:
grant update(id) on mytable to lb;
把更新字段“id”的权限授予lb
注意:查询和删除不能控制到列


查看列的权限:
select * from user_col_privs;


DDL:对表的操作语言
DML:增删改查(只有DML中的插入、更新、删除在编写完SQL之后要对其进行“commit”提交)
DCL:权限控制语言


权限传递

系统权限下:

sys把管理的权限授予zlb,因此zlb就拥有的管理的权限,zlb也可以再把此管理权限授予lb,如:
sys将管理权限授予zlb:
grant alter any table to zlb with admin option;
zlb将管理权限授予lb:
grant alter any table to lb with admin option;

对象权限下:

权限授予语句:
在zlb用户下:
grant select On table to lb with grant option;zlb将查询table表的权限授予lb,并且,把此权限的管理权也授予了lb



角色权限

创建角色:
create role myrole;
授权:
grant create table 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/drop table,只有alter any table/drop any table.因为当用户有了create table的权限时,则已经表示他可以对此表进行任意的操作,所以,修改和删除自己的表权限语句就不存在了。



表是属于某一个用户,而角色是公共的,不属于任何一个用户


丢失管理员密码怎么办

普通用户:

可以通过sys用户去修改普通用户密码
如:通过sys用户修改zlb的密码:
alter user zlb identified by zlb123;

sys用户:

如果我把原有口令文件删掉了,路径为:
E:\oracle\ora92\database\pwdora9i.ora;
创建密码文件:
orapwd file=E:\E:\oracle\ora92\database\pwdora9i.ora password=sys entries=10(指定密码文件中可以放多少特权用户);

之后我们可以查看密码文件中有多少特权用户:
select * from v$pwfile_users;



数据库的是三种验证机制,依次为:

1、操作系统验证:

拥有sysoper和sysdba权限的用户,默认情况下为安装数据库时以该计算机用户名自动创建的,因此在登录时可以不输入用户名密码也可登陆进去;如果把此用户删除,则进行下一步验证。

2、密码文件验证:

拥有sysoper和sysdba权限的用户,如:sys用户

3、数据库验证(普通用户使用)


创建用户:

create user abc(用户名)
identified by abc(密码)
default tablespace users(默认表空间)
Temporary tablespace temp(临时表空间,支持排序)
quota 50M on users(在默认表空间中所使用的空间,即限额;如果是没有限制,则把50M改为unlimited)

acegi权限控制学习笔记

  • 2009年06月06日 13:31
  • 84KB
  • 下载

Oracle APEX 5.0 新手教程(六) 权限控制

Adding Security to your Database Application Using Oracle Application Express 5.0 Before You ...

oracle 权限控制

  • 2010年08月28日 14:51
  • 46KB
  • 下载

oracle用户账号管理和权限控制

  • 2008年12月16日 17:38
  • 928KB
  • 下载

Oracle 表空间 用户和权限控制相关思考

1 oracle的数据模式是:用户建在数据库实例上,表建在用户上      不同数据库实例可以建相同的用户;     同一个数据库实例,用户名不能相同;     一个用户可以使用多个表空间; ...
  • hittata
  • hittata
  • 2012年06月28日 16:22
  • 1909

Java学习笔记之二《访问权限控制》

java核心思想学习笔记:chapter6访问权限控制 1.权限——public/protected/包访问权限-无关键字/private; public——类中成员均可访问; 定义类...

Thinking In Java笔记(第六章 访问权限控制)

第六章 访问权限控制简介    Java提供了访问权限修饰词,供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问权限控制的等级,从最大权限到最小权限一次为:public、protect...

[学习笔记][Java编程思想]第6章:访问权限控制

重构即重写代码,以使得它更可读、更易理解,并因此而更具有可维护性。 Java提供了访问权限修饰词,把变动的事物与保持不变的事物区分开来。 访问权限控制的等级,从最大权限到最小权限依次为:public、...

读thinking in java笔记(五):访问权限控制

访问权限控制
  • ZJDWHD
  • ZJDWHD
  • 2016年09月05日 14:40
  • 359
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Oracle权限控制笔记
举报原因:
原因补充:

(最多只允许输入30个字)