用户管理的一些选项

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

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

3、默认表空间

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

4、默认临时表空间

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

5、配置文件

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

6、用户组

7、锁定状态


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

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

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

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


create user "sysadmin" profile "default" identified by "542580" password expire default tablespace "users" temporary tablespace "temp" account unlock;

grant "connect" to "sysadmin";


//创建表空间

create tablespace test  

datafile '/u01/app/oracle/oradata/ORAL10G/datafile/test.dbf' size 50M  

default storage (initial 500K  

Next 500K  

minextents 1  

maxextents unlimited  

pctincrease 0);


创建用户create

1、考虑用户的名称和密码

2、用户的默认表空间

3、用户的默认临时表空间

4、用户的角色和权限

5、以高级用户来建立普通用户

conn / as sysdba

create user lark identified by a default tablespace test;//建立用户和密码,并设置默认表空间


//赋权

grant select any table to lark;

grant connect to lark;


conn lark/a

select * from session_privs;//查看用户的权限

select * from session_roles;//查看用户的角色

select * from user_users;//当前用户的信息


权限分为系统权限和对象权限

1、系统权限

create、alter、drop

session_privs//查看当前用户的权限


conn / as sysdba

grant create table to lark;//赋予创建表的权限给lark,

alter user lark quota 10m on users;

select * from dba_ts_quota;//表空间配额


2、对象权限

在某个特定的对象上拥有的权限

test用户能访问scott用户的emp表?

user_tab_privs_made

user_tab_privs_recd


conn scott/tiger

grant select on emp to lark;//赋予emp表的select权限给lark

conn lark/a;

select * from scott.emp/


conn scott/tiger

grant all on emp to lark;//赋予emp表的所有权限给lark


revoke all on emp from lark;//收回赋予lark的emp上的所有权限


角色管理

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

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

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

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

create role test;

grant connect to test;

select role from dba_roles;

alter user lark default role dba;//将一个角色设置为默认以后,别的角色就是非默认。用户登录后,只有默认角色起作用。


注:

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

1、sysdba和sysoper

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

2、restricted session

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

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


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

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

Grant unlimited tablespace to lark;

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

Alter user lark quota 100m on users;

Alter user lark quotq unlimited on users;

---查看用户在哪些表空间上存在的配额

Desc dba_ts_quotas

Select username,tablespace_name,bytes from dba_ts_quotas


保持这个参数的默认值false,防止sys的对象被被的用户访问,非常的危险。

Alter system set 07_DICTIONARY_ACCESSIBILITY=FALSE scope=spfile;


有一个系统权限grant any object privilege,如果用户具有了该系统权限,那么该用户就可以代表其他用户将他们所拥有的对象的权限赋给任意的用户。

默认只有sys具有这个权限