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

Oracle权限控制笔记

2012-03-25 22:10 253 查看

系统权限

三个默认用户:

用户 密码

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)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: