zoukankan      html  css  js  c++  java
  • oracle入坑日记<三>用户详解(角色理解)

    1
     
    用户是什么

    1.1、权限管理是Oracle的精华,不同用户登录到同一数据库中,可能看到不同数量的表,拥有不同的权限。Oracle 的权限分为系统权限和数据对象权限,共一百多种。如果把Oracle数据库看做仓库,表空间相当于仓库中的库房,数据表就是存放在仓库库房中的货品。用户相当于仓库管理员,仓库管理员可以管理一个或多个仓库库房,但仓库管理员只属于一个仓库。(作为SqlServer用户,表空间类似SqlServer中的数据库,sys/system用户类似SqlServer中的sa用户

    1.2、Oracle默认有三个用户system 、 sys 、 scott。sys和system属于系统管理员用户,也是Oracle中权限很高的用户(sys权限要更高于system),scott是默认普通用户,scott的默认密码是tiger

    1.3、Oracle关于用户常见问题;

      1.3.1、sys不能用normal权限登录,仅能用sysdbasysoper权限登录。

      

      1.3.2、system不能用sysoper权限登录,仅能用normalsysdba权限登录。

      

      1.3.3、scott用户默认是锁定的,需要解锁才能使用。(scott默认密码是tiger,解锁后可自行修改密码

      

      1.3.4、解锁scott用户,登录sqlplus(normal权限登录即可)后用  alter user scott account unlock;  语句解锁(注意最后有分号结尾)

      

      激活scott用户后,首次登录会提示要求修改密码,默认密码 tiger 不能使用scott

      

    2
     
    用户连接方式(用户身份)

    2.1、使用 PL/SQL 会发现登录的时候【连接为】有三个选项:Normal、SYSDBA、SYSOPER。这是用户选择以什么身份对数据库进行操作,可以看做一个仓库管理员以什么职位对仓库货品进行管理。

    2.2、一个用户可以有多个身份,就好比在一家公司一个人可以身兼数职,而登录数据库时选择的 Normal、SYSDBA、SYSOPER 就是选择以什么职位对数据库进行操作。

    2.3、之前提到,Oracle默认用户SYS可以用 SYSDBASYSOPER连接,用户SYSTEM可以用SYSDBANormal连接,用户scott仅能用Normal连接;身份和角色是多对多的关系,

    2.4、三种身份权限,详见下表

    其中SYS用户拥有最高权限,SYS 是所有内部数据库表、结构、过程包、等拥有者,此外它还拥有 V$ 和数据字典视图,并创建所有封装的数据库角色(DBA,CONNECT,RESOURCE)。 SYS是一个唯一能访问特定内部数据字典的用户。

    作为一般开发人员一般用Normal身份连接数据即可。

    3
     
    创建/删除/修改用户

    3.1、创建用户  create user [username] identified by [password];  

    3.2、修改用户密码  alter user [username] identified by [password]; 

    3.3、修改用户状态(解锁或锁定),Oracle用户有两种状态 lock(锁定)unlock(解锁)  alter user [username] account [lock/unlock]; 

    3.4、删除用户  drop user [username]; 

    4
     
    权限和角色

    4.1、 权限就是在数据库中执行一些操作的权利,比如,登录数据库,连接数据库,创建数据表等。角色是权限的集合,比如,角色A同时拥有登录数据库,创建数据表的权限。举例,拿狼人杀来理解权限和角色的关系,把狼人杀中的行动拆分为权限大概有,天黑睁眼[权限]、查验身份[权限]、使用毒/解药[权限]、投票[权限]等,这些看做Oracle数据库中的权限;大家都知道狼人杀中普通村民晚上是要闭眼的,而特殊身份晚上有睁眼[权限],其中女巫[角色]拥有天黑睁眼[权限]和使用毒/解药[权限]还有投票[权限],那这三个[权限]的集合就是女巫[角色]

      4.1.1、Oracle的权限分为系统权限对象权限;系统权限就是用户对整个数据库的范围内的操作权限,比如常用的建表,连接,建视图等权限,对象权限就是授权其他方案对象用户对自己方案对象的操作权限,比如常用增删改查操作。对象权限的通俗理解,把自己的数据库方案(自己的数据表)共享给其他用户操作使用的权限。

    4.2、系统权限介绍、授权、回收

      4.2.1、系统权限是指执行特定类型sql命令的权利。它用于控制用户可以执行的一个或是一组数据库操作。常用系统权限有:

      

      4.2.2、查看当前Oracle版本的所有系统权限  select * from system_privilege_map order by name; (我目前安装的Oracle11g有208个系统权限

      

      4.2.3、给用户授权角色(或权限) grant [RoleName]|[PowerName] to [UserName];

       

      (给用户【a_user】授权【建立数据库连接】和【创建数据表】权限

      4.2.4、回收权限  revoke [RoleName]|[PowerName] from [UserName];

       

    4.3、对象权限介绍、授权、回收

      4.3.1、对象权限指访问其它方案对象的权利,用户可以直接访问自己方案的对象,但是如果要访问别的方案的对象,则必须具有对象的权限。常用对象权限:

      

      4.3.2、给用户授权角色(或权限)  grant [PowerName]|[RoleName] on [b_UserName].[TableName] to [a_UserName];

       

      授权用户 a_user 对 用户 b_user 下的 t_couse 表 [增、删、改、查] 权限

      4.3.3、回收权限  revoke [PowerName]|[RoleName] on [b_UserName].[TableName] from [a_UserName];

       

      撤销用户 a_user 对 用户 b_user 下的 t_couse 表 [增、删、改、查] 权限

    4.4、角色(权限集合)

      4.4.1、在对用户授权的时候会遇到多个权限需要授权给多个用户的情况。一个个权限分别授权给一个个用户显然效率很低,这种场景就需要用到角色。前面有说到,角色就会权限的集合。

      4.4.2、预定义角色,Oracle已经提供了一些预定义角色,常用到的有 connect,resource,dba 三种角色;

        4.4.2.1、connect角色:具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和resource角色就够了;

        4.4.2.2、resource角色具有应用开发人员所需要的其它权限,比如建立存储过程,触发器等;

        4.4.2.3、dba角色具有所有的系统权限,及with admin option选项,默认的dba用户为sys和system,它们可以将任何系统权限授予其他用户。但是要注意的是dba角色不具备sysdba和sysoper的特权(启动和关闭数据库);

    4.4.3、创建角色,除了Oracle提供的预定义角色,我们也可以自己创建角色 

    create role [RoleName] not identified;
     -- 不验证方式创建角色(没有密码验证)
     
     create role [Role] identified by [password];
     -- 验证方式创建角色(激活角色时需要验证密码)

    4.4.4、给角色授权,自定义创建的角色默认没有任何权限,创建角色后需要分配权限 (注意:分配系统权限时建议使用 system用户

    conn system/[password]; 
    --连接system用户
    grant [PowerName] to [RoleName] with admin option;
    --授权系统权限
    conn scott/tiger@myoral;
    --连接对象用户
    grant [PowerName] on scott.emp to [RoleName];
    --授权对象权限

    4.4.5、删除角色  drop role [RoleName];

    引用资料:https://www.cnblogs.com/ningvsban/p/3606239.html

    <<============================================================================================================================================>>

    此日记系列仅做普通开发使用Oracle,并非专业DBA
  • 相关阅读:
    yii2 gii 命令行自动生成控制器和模型
    控制器中的方法命名规范
    Vue Property or method "" is not defined on the instance but referenced during render. Make sure that this property is reactive, either in the data option, or for class-based
    IDEA插件:GsonFormat
    Spring Boot : Access denied for user ''@'localhost' (using password: NO)
    Typora添加主题
    Git基础命令图解
    Java Joda-Time 处理时间工具类(JDK1.7以上)
    Java日期工具类(基于JDK1.7版本)
    Oracle SQL Developer 连接Oracle出现【 状态: 失败 -测试失败: ORA-01017: invalid username/password; logon denied】
  • 原文地址:https://www.cnblogs.com/MirageFox/p/10234941.html
Copyright © 2011-2022 走看看