oracle中角色和用户权限,oracle用户的角色与权限管理

oracle用户的角色与权限管理

一、权限分类:

系统权限:系统规定用户使用数据库的权限。(系统权限是对用户而言)。

实体权限:某种权限用户对其它用户的表或视图的存取权限。(是针对表或视图而言的)。

二、系统权限管理:

1、系统权限分类(通过角色来进行管理):

DBA: 拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构。

RESOURCE:拥有Resource权限的用户只可以创建实体,不可以创建数据库结构。

CONNECT:拥有Connect权限的用户只可以登录Oracle,不可以创建实体,不可以创建数据库结构。

对于普通用户:授予connect, resource权限。

1.1,具有connect权限的用户,只能够登陆;

1.2,具有resource权限的用户可以:

A:create session

B:create cluster

C:create indextype

D:create operator

E:create procedure

F:create sequence

G:create table

H:create trigger

I:create type

对于DBA管理用户:授予connect,resource, dba权限。

系统权限授权命令:【系统权限只能由DBA用户授出:sys,system(最开始只能是这两个用户)】

授权命令:grant connect ,resource,dba to USER1

[普通用户通过授权可以具有与system相同的用户权限,但永远不能达到与sys用户相同的权限,system用户的权限也可以被回收]

查看角色所拥有的权限:

select * from  role_sys_privs;

查询结果:ROLE:角色名; PRIVILEGE:角色拥有的权限;ADMIN_OPTION:角色被授权时,是否带有with ADMIN option。

系统权限传递:grant connect,resource to USER1 with admin option;

with admin option 用于系统权限授权,with grant option 用于对象授权。

给一个用户授予系统权限带上with admin option 时,此用户可把此系统权限授予其他用户或角色,但收回这个用户的系统权限时,这个用户已经授予其他用户或角色的此系统权限不会因传播无效,如授予A系统权限create session with admin option,然后A又把create session权限授予B,但管理员收回A的create session权限时,B依然拥有create session的权限,但管理员可以显式收回B create session的权限,即直接revoke create session from B.

而with grant option用于对象授权时,被授予的用户也可把此对象权限授予其他用户或角色,不同的是但管理员收回用with grant option授权的用户对象权限时,权限会因传播而失效,如grant select on table with grant option to A,A用户把此权限授予B,但管理员收回A的权限时,B的权限也会失效,但管理员不可以直接收回B的SELECT ON TABLE 权限。

查看用户所属于的角色

select * from dba_sys_privs;

查看用户拥有的权限

select * from dba_role_privs;

删除用户:drop user USER1 cascade; //加上cascade则将用户连同其创建的实体全部删除

*:当前正连接的用户不得删除

系统权限回收:系统权限只能由DBA用户回收

Revoke connect,resource from USER1;

2、实体权限分类:

select , update , insert , alter , delete , all //all包括所有的权限;

execute //执行存储过程权限;

2.1,将表TABLE上的select,update,insert权限给TEST用户;

grant select , update , insert on TABLE to TEST;

查看对表所拥有的权限;

select * from dba_tab_privs where TABLE_NAME='TABLE'; //TABLE_NAME=‘必须大写’

授予用户所有的权限;

gramt all on TABLE to TEST;

被赋予all的权限后,所拥有的操作

PRIVILEGE: alter , delete , index , insert , select , update , references , on commit refresh , query rewrite , debug , flashback

将表的操作权授予全体用户:

grant all on TABLE to public; //public 表示是所有的用户,这里的all权限不包括drop;

[实体权限数据字典]:

select owner,table_name from all_tables; //用户可以查询的表

select table_name from user_tables; //用户创建的表

select grantor,table_schema,table_name,privilege from all_tab_privs; //获取可以存取的表(被授权的)

select grantoe,owner,table_name,privilege from user_tab_privs; //授出权限的表(授出的权限)

实体权限传递(with grant option)

grant select,update on product to USER1 with grant option; //USER1 得到权限,并可以传递

实体权限收回:

Revoke select,update on product from USER1; //传递的权限将全部丢失

3、用户profile文件

Oracle系统中的profile 可以用来对用户所能使用的数据库资源进行限制,使用Create Profile 命令创建一个Profile,用它来实现对数据库资源的限制使用,如果把该prifile分配给用户,则该用户所能使用的数据库资源都在该prifile的限制之内。

3.1、创建profile必须要有CREATE PROFILE 的系统权限。

创建用户的Profile 文件

create profile STUDENT limit //STUDENT 为资源文件名;

failed_login_attempts 3 //指定锁定用户的登录失败次数;

password_lock_time 5 //指定用户被锁定天数;

password_life_time 30 //指定口令可用天数;

select * from dba_profiles;

创建用户:

create user USER1

identified by PASSWORD //如果密码是数字,请用双引号括起来

default tablespace TABLESPACE

temporary tablespace TABLESPACE

profile PROFILE

quota INTEGER/UNLIMITED on TABLESPACE;

查询用户缺省表空间、临时表空间

select username,default_tablespace,temporary_tablespace from dba_users;

查询系统资源文件名:

select * from dba_profiles;

资源文件类似表,一旦创建就会保存在数据库中

select username,profile,default_tablespace,temporary_tablespace from dba_users;

create profile COMMON limit

failed_login_attempts 5

idle_time 5;

alter user USER1 profile COMMON;

3.2、修改用户:

alter user USER1

identified PASSWORD

temporary tablespace TABLESPACE

profile PROFILE

quota INTEGER/UNLIMITED on TABLESPACE;

A、修改口令字

alter user USER1 identified by PASSWORD;

B、修改用户缺省空间

alter user USER1 default tablespace USER1;

C、修改用户临时表空间

alter user USER1 temporary tablespace TEMP_DATA;

D、强制用户修改口令字

alter user USER1 password EXPIRE;

E、将用户加/解锁

alter user USER1 acount lock; //加锁

alter user USER1 acount unlock; //解锁

3.3、监视用户

A、查询用户会话信息

select username,sid,serial#,machine from v$session;

B、删除用户会话信息

alter system kill session 'sid,serial#';

C、查询用户

select user_name,sql_text from v$open_cursor;

3.4、查询权限分配情况

ROLE_SYS_PRIVS : 角色拥有的系统权限

ROLE_TAB_PRIVS : 角色拥有的对象权限

USER_TAB_PRIVS_MADE : 查询授出去的对象权限

USER_TAB_PRIVS_RECD : 用户拥有的对象权限

USER_COL_PRIVS_MADE : 用户分配出去的列的对象权限

USER_COL_PRIVS_RECD : 用户拥有的关于列的对象权限

DBA_SYS_PRIVS : 数据库中用户和角色拥有的系统权限

DBA_TAB_PRIVS : 数据库中所有的对象权限

DBA_COL_PRIVS : 数据库中所有的列对象权限

DBA_ROLE_PRIVS : 数据库中所有的用户和角色拥有的角色

三、管理角色

1、建角色

create role ROLE1;

2、授权给角色

grant create any table,create procedure to ROLE1;

3、授予角色给用户

grant ROLE1 to USER1;

4、查看角色所包含的权限

select * from role_sys_privs;

5、创建带有口令的角色(在生效带有口令的角色时必须提供口令)

create role ROLE1 identified by PASSWORD1;

6、修改角色是否需要口令

alter role ROLE1 not identified;

alter role ROLE1 identified by PASSWORD1;

7、设置当前用户要生效的角色

(注:角色的生效是一个什么概念呢?假设用户a有b1,b2,b3三个角色,那么如果b1未生效,则b1所包含的权限对于a来说是不拥有的,只有角色生效了,角色内的权限才作用于用户,最大可生效角色数由参数MAX_ENABLED_ROLES设定;在用户登录后,oracle将所有 直接赋给用户的权限和用户默认角色中的权限赋给用户。)

set role ROLE1; //使ROLE1生效

set role ROLE1,ROLE2 ; //使ROLE1,ROLE2 生效

set role ROLE1 identified by PASSWORD1L //使用带有口令的ROLE1生效

set role all; //使用该用户的所有角色生效

set role none; //设置所有角色失效

set role all except ROLE1; //除ROLE1外的该用户的所有其他角色生效

select * from SESSION_ROLES; //查看当前用户的生效的角色

8、修改指定用户,设置其默认角色

alter user USER1 default role ROLE1;

alter user USER1 default role all except ROLE1;

9、删除角色

drop role ROLE1;

角色删除后,原来拥有该角色的用户就不再拥有该角色了,相应的权限也就没有了;

说明:A、无法使用 with grant option 为角色授予对象权限

B、可以使用 with admin option 为角色授予系统权限,取消时不是级联

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值