Oracle的权限用户角色详解

来源:互联网 发布:奥拉朱旺生涯数据 编辑:程序博客网 时间:2024/05/22 00:19
1 权限的分类:

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

      实体权限:某种权限的用户对于表或者视图的存取控制权限(针对表或者视图而言)

  常见的权限列表(仅供参考)见附录一:


Oracle的角色管理

一:概念

  角色:一组权限的集合,将角色赋给一个用户,这个用户就拥有了这个角色中的所有权限

二:一些常用的系统预定义角色

1:CONNECT,RESOURCE, DBA

  这些预定义角色主要是为了向后兼容。其主要是用于数据库管理。

  oracle建议用户自己设计数据库管理和安全规划

  而不要简单的使用这些预定角色。将来的版本中这些角色可能不会作为预定义角色

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

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

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

2:DELETE_CATALOG_ROLE, EXECUTE_CATALOG_ROLE, SELECT_CATALOG_ROLE

  这些角色主要用于访问数据字典视图和包

3:EXP_FULL_DATABASE, IMP_FULL_DATABASE

  这两个角色用于数据导入导出工具的使用。

4:AQ_USER_ROLE, AQ_ADMINISTRATOR_ROLE

  这两个角色用于oracle高级查询功能

  备注:AQ:Advanced Query

5:SNMPAGENT

  用于oracle enterprise manager和Intelligent Agent

6:RECOVERY_CATALOG_OWNER

  用于创建拥有恢复库的用户。

三:角色管理

1:创建一个角色

  createrole rolename;      --创建一个名叫rolename的角色

2:给角色授权

  grantcreate any table,create procedure to rolename; --给rolename这个角色赋予创建表和过程

3:给用户授予指定的角色

  grantrolename to username;      --给username这个用户授予rolename角色

4:查看角色所包含

  select *from role_sys_privs;

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

  createrole role1 identified by password1;

6.修改角色:是否需要口令

  alterrole role1 not identified;

  alterrole role1 identified by password1;

7.修改指定用户,设置其默认角色

  alteruser user1 default role role1;

  alteruser user1 default role all except role1;

9.删除角色

  drop role role1;

备注:角色删除后,原来拥用该角色的用户就不再拥有该角色了,相应也就没有了。

Oracle的用户管理

一:Oracle用户的创建步骤

  step1:创建用户的Profile文件

    create profile student limit    --student为资源文件名

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

    password_lock_time   5          --指定用户被锁定天数

    password_life_time    30        --指定口令可用天数

 

  备注:关于Profile

  作用:ORACLE的PROFILE文件是限制数据库用户使用资源的一种手段。

    如:控制session或sql能使用的CPU、控制用户的密码管理策略等。

  用法:参见:《ORA02_Profile文件》

 

  step2:创建用户

    create user user1                 --创建用户,指定用户名

    Identified by pwd1                --指定用户密码

    default tablespace spname1         --指定用户的defauttablespace

    temporary tablespace spname2       --指定用户的temporarytablespace

    profile student                    --指定用户使用哪个profile

    quota 100M on spname1;             --指定用户使用spname1表空间的最大空间

 

  备注:tablespace

  作用:ORACLE中,表空间是数据管理的基本方法,所有用户的对象要存放在表空间中

  用法:参见《ORA03_Oracle表空间》

 

  step3:为新建的用户授权

    grant connect,resource to user1;            --授予user1普通用户

    grant connect,resource,dba to user1;       --授予user1DBA管理员

 

二:修改用户

  Alter User user1                     --指定要修改的用户

  Identified pwd1                       --修改用的密码

  Default Tablespace spname1            --修改用户的DefaultTablespace

  Temporary Tablespace spname2          --修改用户的temporary tablespace

  Profile student                       --修改用户的profile

  Quota 100M on spname1;               --修改用户在spname表空间上的最大空间

 

  单独修改

    alter user user1 identified by pwd2;             --将use1的密码修改为pwd2

    alter user user1 default tablespace spname2;     --将用户的缺省表空间修改为spname2

    alter user user1 temporary tablespace spname2;   --将用户的临时表空间修改为spname2

 

三:删除用户

  drop user user1;            --删除用户

  drop user user1 cascade;    --删除用户,以及级联的删除用户创建的全部实体

  注意:当前用户不能使用这种方式删除

 

四:其他

  查询用户会话信息:

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

  删除用户会话信息:

    Alter system kill session 'sid, serial#';

  查询用户SQL语句:

    select user_name, sql_text from v$open_cursor;

 

其他相关知识点

一:Oracle的用户认证方式

1>操作系统验证

  登录的时候只验证当前登录当前操作系统的用户不在在Ora_dba用户组当中,如果在则登录成功,如果不在则使用数据库验证方式验证

2>数据库验证

  根据用户输入的登录信息到对应的文件中查找用户名和密码以及身份是否正确,如果正确则登录成功,否则失败

  设定用户认证方式:修改sqlnet.ora文件

  决定是否使用操作系统方式验证:

  SQLNET.AUTHENTICATION_SERVICE(NTS)      --使用操作系统方式验证

  SQLNET.AUTHENTICATION_SERVICE(NONE)      --使用数据库方式验证

  SQLNET.AUTHENTICATION_SERVICE(NTS,NONE)   --两种方式都用

 

  普通用户登录,默认已数据库验证方式登录

  特权用户登录,默认使用操作系统验证,当登陆的时候带有 as sysdba,时dbms默认默认为特权用户登录,则忽略用户名和密码,自动用操作系统验证方式验证,登陆成功之后自动切换为sys用户

 

二:管理员用户口令丢失怎么办?

    1:找到PWD数据库实例名.ora

    2:将文件备份一份(可选,建议备份)

    3:删除文件

    4:在dos窗口下输入命令

        orapwd file=密码文件路径\密码文件名

        password=新密码

        entries=允许最多的用户数目

    5:重启数据库实例,让密码文件生效

 

三:Oracle权限的转移:

       如果赋权限的时候允许用户能够将权限继续赋给其他的用户

    对象权限:加with grant option

    系统权限:加whth admin option

    例如:

     

grant select on emp to user1 with grant option;grant connect,resource,dba to user1 withadmin option;

附录一:常见的权限列表(仅供参考)

alter any cluster

修改任意簇

alter any index

修改任意索引

alter any role  

修改任意角色

alter any sequence

修改任意序列

alter rollback segment

修改回滚段

alter sequence

修改拥有的序列权限

alter session

修改数据库会话

alter sytem

修改数据库服务器设置

alter table

修改拥有的表权限

alter tablespace

修改表空间

alter user

修改用户

analyze

使用analyze命令分析数据库中任意的表、索引和簇

audit any

为任意的数据库对象设置审计选项

audit system

允许系统操作审计

backup any table

备份任意表
  

become user

切换用户状态

commit any table

提交表

create any cluster

为任意用户创建簇

create any index

为任意用户创建索引

create any procedure

为任意用户创建存储过程

create any sequence

为任意用户创建序列

create any snapshot

为任意用户创建快照

create any synonym

为任意用户创建同义名

create any table

为任意用户创建表

create any trigger

为任意用户创建触发器

create any view

为任意用户创建视图

create procedure

为用户创建存储过程

create profile

创建资源限制简表

create public database link

创建公共数据库链路

create public synonym

创建公共同义名

create role

创建角色

create rollback segment

创建回滚段

create session

创建会话

create sequence

为用户创建序列

create snapshot

为用户创建快照

create synonym

为用户创建同义名

create table

为用户创建表

create tablespace

创建表空间

create user

创建用户

create view

为用户创建视图

delete any table

删除任意表行

delete any view

删除任意视图行

alter any snapshot

修改任意快照

alter any table

修改任意表

update table

修改用户表中的行

update view

修改视图中行

update any table

修改任意表中行

update snapshot

修改快照中行

select view

使用视图

unlimited tablespace

对表空间大小不加限制

alter any trigger

修改任意触发器

alter cluster

修改拥有簇

select sequence

使用用户序列

select table

使用用户表

select any table

使用任意表

select snapshot

使用快照

restricted session

创建有限制的数据库会话

select any sequence

使用任意序列

manager tablespace

管理表空间

references table

参考表

insert view

向用户视图中插行

lock any table

给任意表加锁

insert snapshot

向快照中插入行

insert table

向用户表中插入行

alter database

修改数据库

alter procedure

修改拥有的存储过程权限

index table

给表加索引

insert any table

向任意表中插入行

grant any privilege

授予任意系统特权

grant any role

授予任意角色

force any transaction

管理未提交的任意事务的输出权限

force transaction

管理未提交的用户事务的输出权限

execute package

执行存储包

execute procedure

执行用户存储过程

execute any procedure

执行任意存储过程

execute function

执行存储函数

drop tablespace

删除表空间

drop user

删除用户

drop public synonym

删除公共同义名

droprollback segment

删除回滚段

drop public cluster

删除公共簇

drop public database link

删除公共数据链路

drop any trigger

删除任意触发器

drop any view

删除任意视图

drop any table

删除任意表

drop profile

删除资源限制简表

drop any snapshot

删除任意快照

drop any synonym

删除任意同义名

alter profile

修改资源限制简表

alter resource cost

设置佳话资源开销

drop any role

删除任意角色

drop any sequence

删除任意序列

drop any index

删除任意索引

drop any procedure

删除任意存储过程

delete view

为用户删除视图行

drop any cluster

删除任意簇

delete snapshot

删除快照中行

delete table

为用户删除



原创粉丝点击