一、关于Oracle用户权限表的认知
在Oracle中有很多的用户,不同的用户有着不同的权限,在学习阶段,一般使用的是scott用户,并且对该用户的表进行增删改查等操作。下面就简单介绍一下常见的用户。
sys;//系统管理员,拥有Oracle的最高的权限;
system;//本地管理员,拥有次高的权限;
scott;//普通的用户,密码默认是tiger,默认未解锁。
二、解锁用户
oracle中,除了sys没有锁住之外,其他的用户一般都是锁住的,所以我们需要将之解锁,解锁命令如下:
/*解锁scott用户*/
alter user scott account unlock;
/*修改scott密码*/
alter user scott identified by tiger;
当我们执行了上述的操作之后我们就可以使用scott的normal用户了。
三、创建用户
当我们想要创建一个新的用户的时候,必须处于管理员用户权限下面才可以创建并且给他赋予权限,命令如下:
/*创建用户并且给用户设置密码*/
create user zhangsan identified by tiger;
四、授予权限
1、系统管理员给创建用户赋予权限
当我们创建了一个用户后,这个用户其实是没有任何权限的,需要系统管理员给他赋予权限,比如:
/*授予(回收)zhangsan用户创建session的权限,即登陆权限*/
grant create session to lisi;
revoke create session from lisi;
/*赋予zhangsan用户使用表空间的权限*/
grant unlimited tablespace to zhangsan;
/*授予用户创建表的权限*/
grant create table to zhangsan;
revoke create table from zhangsan;
以上按照顺序才可以正式使用。对用户赋予权限在网络上查找资料的时候还有一些如下命令,但是在PL/SQL Developer中使用不了,这里也作为一个参考,命令如下:
grant create table to zhangsan;//授予创建表的权限
grante drop table to zhangsan;//授予删除表的权限
grant insert table to zhangsan;//插入表的权限
grant update table to zhangsan;//修改表的权限
grant all to public;//这条比较重要,授予所有权限(all)给所有用户(public)
2、普通用户之间的相互访问
oralce对权限管理比较严谨,普通用户之间也是默认不能互相访问的,需要互相授权
/*授予(回收)zhangsan查询scott用户中的emp表数据的权限,执行语句所在用户必须有这张表*/
grant select on emp to zhangsan;
revoke select on emp from zhangsan;
/*授予(回收)zhangsan插入数据到scott用户中的emp表的权限,执行语句所在用户必须有这张表*/
grant insert on emp to zhangsan;
revoke insert on emp from zhangsan;
/*授予(回收)zhangsan修改scott用户中的emp表数据的权限,执行语句所在用户必须有这张表*/
grant update on emp to zhangsan;
revoke update on emp from zhangsan;
/*授予(回收)zhangsan删除scott用户中的emp表数据的权限,执行语句所在用户必须有这张表*/
grant delete on emp to zhangsan;
revoke delete on emp from zhangsan;
3、权限传递
即用户A将权限授予B,B可以将操作的权限再授予C,命令如下:
grant alert table on tablename to zhangsan with admin option;//关键字 with admin option
grant alert table on tablename to zhangsan with grant option;//关键字 with grant option效果和admin类似
4、角色
角色即权限的集合,可以把一个角色授予给用户
create role myrole;//创建角色
grant create session to myrole;//将创建session的权限授予myrole
grant myrole to zhangsan;//授予zhangsan用户myrole的角色
drop role myrole;//删除角色