zoukankan      html  css  js  c++  java
  • oracle-用户管理与权限分配

    模式或方案s实际上是用户所拥有的数据库对象的集合

    创建于管理用户

      身份验证

    提供了3种身份验证方法

    1.密码验证

    由于用户信息和密码都存储在数据库内部,所以使用密码验证用户也称为数据库验证用户

    2.外部验证

      外部验证是指当用户视图链接到数据库时,数据库会核实用户名是否为一个有效的数据库账号,并且确认该用户已经完成了操作系统级别的身份验证

    外部验证用并不在数据库中存储一个验证密码                                                                                                                                     

    3.全局验证

      全局验证是指用户不在数据库中存储验证码,而是通过一种高级安全选项所提供的身份验证服务来进行的

    一般,比较常用的方式是密码验证方式

    创建用户

    --identified exeternally

      表示用户在操作系统下验证,在这种情况下,要求该用户必须与操作系统中所定义的用户名相同  

    --identified globally as 'CN=user'

      表示用户名由Oracle安全域中心服务器验证,CN名字表示用户的外部名

    --quota[integer k[M]][unlimited]] on tablespace_specify

      表示用户在制定表空间中允许占用的最大空间

    --profiles profile_name

      资源文件的名字

    --account lock or account unlock:用户是否被加锁,默认情况下不加锁

    如:创建一个用户,mr,口令mrsoft,并设置默认的表空间为users,临时表空间为temp的用户

    create user mr identified by mrsoft

    dafault tablespace users

    temporary tablespace temp;

    如:创建一个用户east,口令mrsoft,默认表空间是users,临时表空间是temp的用户,并制定该用户在tbsp_1表空间上最多可使用的大小为10MB:

    create user east identified by mrsoft
    default tablespace users
    temporary tablespace temp
    quota 10m on tbsp_1
    /

    如果禁止用户使用某个表空间,则可以通过quota关键字设置该表空间的使用限额为0

    如:创建用户df,口令mrsoft,临时表空间temp,默认表空间tbsp_1,并且该用户使用tbsp_1表空间不受限制

    create user df identified by mrsoft
    default tablespace tbsp_1
    temporary tablespace temp
    quota unlimited on tbsp_1
    /

    注意:

    1.如果没有为用户不指定default tablespace子句,Oracle会将system表空间作为用户默认表空间

    2.如果没有指定temporary tablespace ,Oracle会将数据库默认临时表空间作为用户的临时表空间

    3.如果建立的用户没有为表空间指定quota子句,那么用户在特定表空间上的配额为0,用户将不能再相应的表空间上建立数据对象

    修改用户:alter...

    1.修改用户的磁盘配额

    alter user east quota 20m on tbsp_1;

    2修改用户的口令

    alter user east identified by 123456;

    3.解锁被锁住的用户

    alter user SH account unlock;

    删除用户

    drop user df cascade

    cascade:级联删除,如果用户包含数据库对象,则必须加cascade,此时连同该用户所拥有的对象一起删除

    用户权限管理

      在创建了用户之后,只是在Oracle中进行了注册,这样的用户不能连接到数据库,必须让具有DBA角色的用户对该用户进行授权

    权限分类:

      系统权限--系统级对数据库进行存取和使用的机制,SESSSION,DDL(CREATE,ALTER,DROP)...

      对象权限--某一用户对其他对象用户的表、视图、序列、存储过程、函数、包等的操作权限。不同类型的对象具有不同的对象权限,对于某些模式对象,比如簇、索引、触发器、数据库连接等没有相应的实体权限,这些权限由系统权限进行管理。

    授权操作

      system_privilege_map数据目录视图

    --with admin option

      表示被授权者可以再将权限授予另外的用户

    如:为用户east 授予连接和开发系统权限,并尝试使用east连接数据库:

    grant connect,resource to east;

    如:在创建用户dongfang和xifang后,首相system将创建session和table的权限授给dongfang,然后dongfang再将这两个权限传递给xifang,最后通过xifang用户创建一个数据表

    create user dongfang identified by mrsoft default tablespace users quota 10m on users;

    create user xifang identified by mrsoft default tablespace users quota 10m on users;

    grant create session,create table to dongfang with admin option;

    connect dongfang/mrsoft

    grant create session,create table to xifang

    connect xifang/mrsoft

    create table tb_xifang

    (

    id number,

    name varchar2(20)

    );

    回收系统权限

    使用revoke命令可以撤销用户不必要的系统权限

    如:revoke resource from east

      如果DBA用grant命令给用户A授予系统权限带有with admin option,则该用户A有权将系统权限再次授予另外的用户B。在这种情况,如果DBA使用revoke命令撤销用户A的系统权限,则用户B的系统权限仍然有效

    对象授权

    如:给用户xifang授予select ,insert,delete 和update表soctt.emp的权限

    grant select,insert,delete,update on scott.emp to xifang

    回收对象权限

    如:revoke delete,update on scott.emp from xifang;

      和授权系统权限不同,如果是wiht admin option授权的用户,会级联回收其他用户

    查询用户与权限

    数据字典名称 说明
    dba_users 数据库用户基本信息表
    dba_sys_privs 已授予用户或角色的系统权限
    dba_tab_privs 数据库对象上的所有权限
    user_sys_privs 登录用户可以查看自己的系统权限
    role_sys_privs 登录用户查看自己的角色
    all_tables 用户可以查看自己的角色
    user_tab_privs 用户自己将哪些基表权限授予哪些用户
    all_tab_privs 哪些用户给自己授权

    角色管理

      角色是一个独立的数据库实体,它包括一组权限。也就是说,角色是包括一个或多个权限的集合,它并不被哪个用户所拥有。角色可以被授予任何用户,与可以从用户中将角色收回

    预定义角色

      在数据库系统完成后,由系统自动创建的。

    connect

    resource

    dba

    exp_full_database--操作数据库的导出工具

    imp_full_database--操作数据库的导入工具

    一般数据库管理员分别授予connect,resource,dba

    数据库开发人员:connect resource

    创建角色与授权

    --identified by exeternally:表示角色名在操作系统下验证

    --identified by globally:表示用户是Oracle安全域中心服务器来验证,此角色由全局用户来使用

    如:创建一个名为designer角色,该角色的口令为123456:

    create role designer identified by 123456;

    grant create view,create table to designer

    把角色授给某个用户

    grant designer to dongfang;

    管理角色

    1.查看角色所包含的权限

      role_sys_privs

    如:select * from role_sys_privs where role='DESIGNER';

    2.修改角色密码

    --取消密码:alter role designer not identified;

    --修改角色密码:alter role designer identified by mrsoft;

    3.设置当前用户要生效的角色

    如:set role  designer (identified by mrsoft)

    4.删除角色

    如:drop role queryer

    角色与权限的查询

    DD--dba_col_privs

      数据库列上的所有权限

    DD--session_roles

      当前用户所有有效权限

                                                                    

              

  • 相关阅读:
    C语言宏定义##连接符和#符的使用
    C语言宏高级用法 [总结]
    101平衡模式 DIR的理解
    MACHINE_START 怎样调用
    SYSCALL_DEFINE3宏定义的分析
    ARM-Linux系统调用流程
    SYSCALL_DEFINE3 宏定义的转换
    socket编程之select()
    socket编程之select()
    Oracle 常用的查询操作
  • 原文地址:https://www.cnblogs.com/xcnblog3035/p/5274961.html
Copyright © 2011-2022 走看看