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权限登录。

  oracle入坑日记<三>用户详解(角色理解)

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

  oracle入坑日记<三>用户详解(角色理解)

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

  oracle入坑日记<三>用户详解(角色理解)

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

  oracle入坑日记<三>用户详解(角色理解)

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

  oracle入坑日记<三>用户详解(角色理解)

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

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

oracle入坑日记<三>用户详解(角色理解)

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

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

oracle入坑日记<三>用户详解(角色理解)

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

oracle入坑日记<三>用户详解(角色理解)

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

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

3
 
创建/删除/修改用户

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

oracle入坑日记<三>用户详解(角色理解)

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

oracle入坑日记<三>用户详解(角色理解)

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

oracle入坑日记<三>用户详解(角色理解)

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

oracle入坑日记<三>用户详解(角色理解)

4
 
权限和角色

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

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

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

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

  oracle入坑日记<三>用户详解(角色理解)

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

  oracle入坑日记<三>用户详解(角色理解)

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

  oracle入坑日记<三>用户详解(角色理解)

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

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

  oracle入坑日记<三>用户详解(角色理解)

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

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

  oracle入坑日记<三>用户详解(角色理解)

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

  oracle入坑日记<三>用户详解(角色理解)

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

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

  oracle入坑日记<三>用户详解(角色理解)

  撤销用户 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

上一篇:Jupyter Notebook 对LaTeX 的支持


下一篇:laravel 5.1 性能优化对比 - 框架提供的方法