Admin-Users and Roles

本文深入探讨了Oracle数据库中用户管理的相关选项,包括唯一用户名、密码认证、默认表空间与临时表空间、配置文件、用户组、锁定状态以及外部认证机制。详细介绍了如何为普通用户、sys和system用户配置权限,包括系统权限、对象权限和角色管理,旨在为数据库管理员提供全面的指导。

用户管理的一些选项

1、唯一的用户名、字母开头、不包括特殊字符、最长30

2、要有一种认证方式,通常采用密码认证,也就是登录时提供用户名和密码

3、默认表空间

  Oracle10g中定义了一个数据库级别的默认表空间,如果用户没有定义默认表空间,那么就使用这个作为自己的默认表空间,10g以前,如果出现这种情况,那么就是用system表空间,这显然不合理,因此建立一个数据库级别的表空间还是很有意义的

4、默认临时表空间

  临时表空间最经典的使用就是排序的时候,PGA容纳不了排序所产生的临时数据,9i开始可以指定数据库级别的默认临时表空间

5、配置文件

  用来控制用户密码策略、以及资源使用的配置信息

6、用户组

7、锁定状态

数据库建立以后,会产生两个重要的用户:syssystem

sys是超级管理员,必须作为sysdba登陆,这是安全措施

因为sys的权限太大,使用sysdba登陆以后,审计文件会记录登录的时间信息,system没有sys的权限大

最通常的用法是:日常管理中,不要使用syssystem登录数据库,而是建立一个用户、并赋予DBA角色,使用该用户进行日常的管理工作

创建用户:

CREATE USER "SYSADMIN" PROFILE "DEFAULT" IDENTIFIED BY "*******" PASSWORD EXPIRE DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK
GRANT "CONNECT" TO "SYSADMIN" 

看一下外部认证(操作系统认证的例子) os_authent_prefix($ops)

一个操作系统用户的账号是ora,那么在数据库里面需要建立一个用户叫做ops$ora,这个用户登陆操作系统以后,就可以直接登陆数据库了。因为操作系统已经认证了这个用户。

CREATE USER "OPS$ORA" PROFILE "DEFAULT" IDENTIFIED EXTERNALLY DEFAULT TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK
GRANT "CONNECT" TO "OPS$ORA"

useradd ora -g oinstall

su - ora

vi .bash_profile  --add ORACLE variable

sqlplus /nolog

connect /

show user

OPS$ORA

1、对于普通用户来说,账号存储在数据字典的表里面,数据库没有启动以前,不能对用户进行认证。

2、对sys用户的认证方式有些特殊,因为sys用户需要在数据库还没有启动的情况下进行登录,对sys用户的认证主要有两种方式

  操作系统认证

  密码文件认证

操作系统认证

  unix下面,如果用户属于DBA组,那么用户登录操作系统后就可以使  用sysdba进行登录

  windows下面,如果用户属于ora_dba组,那么用户登录操作系统以  后,可以使用sysdba进行登录

如果用户属于oinstall组,不能进行操作系统认证。

如果用户属于DBA组,那么就可以使用操作系统认证,使用DBA角色登录数据库。在这方面,我们使用最多的就是Oracle用户。

上面的认证需要我们的用户登陆Oracle所在的数据库服务器上。

是否使用操作系统认证,还取决于一个设置

$ORACLE_HOME/NETWORK/admin/sqlnet.ora

SQLNET.AUTHENTICATION_SERVICES=(NTS)

这个文件中有这么一条记录,或者没有这么一条记录。那么就表示可以使用操作系统进行认证。

远程登录Oracle,如何实现sys认证,就需要使用口令文件。

远程登录,必须提供sys的密码,这是安全要求。但是密码又不能存放在数据字典表里面,只能存放在另外一个位置,那就是密码文件。

1、在服务器上建立一个密码文件

  unix上位于$ORACLE_HOME/dbs

  windows上位于$ORACLE_HOME/database

SID为小写,那么口令文件中的orapwSID中的SID也要小些,两者必须相同,而且区分大小写。

2、设置初始化参数

remote_login_passwordfile

NONE:不能进行密码文件认证,Oracle未启动的情况下,远程用户没有办法通过网络服务的方式以SYSDBA权限登录到Oracle数据库。

EXCLUSIVE:默认值,该密码只能被一个实例使用,我们可以向密码文件中添加新的用户

SHARED:该密码文件可以被多个实例使用(用于RAC),但是密码文件里面只能存放syssystem用户的密码

要启用口令文件认证,需要设置口令文件和配置上面的remote参数

默认只有sys可以使用口令文件。

密码丢失可以手工重建口令文件。

用户sys的密码存在口令文件和数据字典中,修改了密码以后,会同时更新两个地方的密码。

口令文件中可以存放多个用户,这些用户都可以使用sysdba在数据库没有启动的情况下登录数据库。

Profile的作用主要表现在两个方面

1、密码策略

2、对用户所能使用的资源进行管理

3profile存放在数据字典里面,默认有一个名字为defaultprofile

权限分为两种:系统权限、对象权限

系统权限

  指的是用户能够做什么事情的权限

  例如:创建一个表空间、创建表等

  Oracle10g有超过100个的系统权限

  有很多的权限带有any,举例

  create table表示能够在自己的schema里面创建表

  create any table表示能够在其他schema里面创建表

  所有的系统权限都放在system_privilege_map数据字典里面

我们来研究一些和系统管理有关的权限

1sysdbasysoper

  最重要也是最大的权限,在数据库里面能够做任何想做的事情

2restricted session

  拥有该权限的用户,则在数据库以restricted模式打开的时候,也能够登录数据库,以restricted模式打开数据库是为了进行维护性的工作,例如升级,我们不希望其他用户也能够登录到数据库,默认只有用户sys具有该权限

3、以create以及create any开头的权限

4、以drop 以及drop any开头的权限

5create session:表示用户能够连接到数据库实例并创建session,用户要能够登录数据库的话,至少要求该权限,也就是说,创建一个用户以后,至少要给与这个权限

如果用户需要在其所在的schema下创建对象,则需要有表空间上的配额(quota

1unlimited tablespace系统权限,该用户能够在任何表空间里使用存储空间

grant unlimited tablespace to username;

2、赋予用户在某些特定的表空间上的配额,该配额可以是一个具体的数值,也可以是unlimited

alter user username quota XXM/unlimited on tbs;

如何知道用户在哪些表空间上存在多少配额?dba_ts_quotas

带有any关键字的系统权限,表示可以在不同的schema下处理对象。默认情况下,即便具有any的系统权限,也不能操作用户sys所拥有的对象,这取决于下面的参数。O7_DICTIONARY_ACCESSIBILITY,保持这个参数的默认值false,防止sys的对象($结尾)被的用户访问,非常的危险。

对象权限

例如用户可以查询另一个用户下的一个对象,这就是对象权限

必须以对象所有者的身份登陆,然后将当前用户所具有的某个对象权限赋给另外的用户。对象权限的传递,使用with grant option有一个系统权限grant any object privilege,如果用户具有了该系统权限,那么该用户就可以代表其他用户将他们所拥有的对象的权限赋给任意的用户。

默认只有sys具有这个权限。

角色管理

角色是一组权限的集合,并给该集合起了个名称,这个名称就是角色名。

角色可以赋给某个用户,这样该用户就具有了角色所包含的所有权限。

角色还可以赋给另外的角色。

角色的赋权过程中,不能形成环路,否则报错。

  A角色赋给了B角色,又把B角色赋给了C角色,如果有要把C角色赋给A角色,系统就会报错。

角色管理的好处

1、利于权限的分配

  20个用户,他们的权限相同,每个用户10个权限,总共需要赋权限200次。如果为10个权限建立一个角色,那么只需要付权限30次(10次给角色、20次给用户)

2、利于权限的管理

  我们可以从角色中收回某个权限,这样20个都失去了这个权限

  我们通过禁用这个角色,让20个用户失去角色中所有的权限

数据库创建好以后,就已经预先建立了很多的角色 dba_roles

DBA:具有大部分的管理权限

  我们不应该使用syssystem进行维护

  建立一个用户,然后将DBA权限付给这个用户

RESOURCE权限,该角色具有很多的create开头的系统权限

比如create tablecreate procedure等。如果使用该角色,则用户可以创建很多不同类型的对象。

  9i中,resource角色具有unlimited tablespace的系统权限

  在10g中,不再具有这个系统权限

角色的启用、认证

默认角色和非默认角色

用户可以拥有很多的角色,用户登录的时候,默认角色一定会自动的启用,不管是否设置了角色的认证,默认角色总是启用的。

非默认角色在用户登录后需要手工的启用,如果设置了认证,还需要通过认证。

将一个角色设置为默认以后,别的角色就是非默认。

用户登录后,只有默认角色起作用。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/27064837/viewspace-745747/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/27064837/viewspace-745747/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值