用户、权限和角色管理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
用户、权限和角色管理
一、用户管理涉及的一些选项
1、用户名唯一、以字母开头、不能包括特殊字符、最长30个.
2、要有一种认证方式,通常采用密码认证(登录时提供用户名和密码)
3、默认表空间
Oracle10g中定义了一种数据库级别的默认表空间,如果用户没有定义默认表空间,那么就使用这个作为自己的默认表空间,10g以前,如果没有指定默认表空间,那么就使用system表空间,这显然不合理,因此建立一个数据库级别的表空间很有意义!
4、默认临时表空间
临时表空间最经典的使用就是在排序的时候,PGA容纳不了排序所产生的临时数据,9i开始可以指定数据库级别的默认临时表空间.
5、配置文件
用来控制用户密码策略、以及资源使用的配置信息
6、用户组
7、锁定状态
二、两个重要用户:sys和system
1、数据库建立以后,会产生这两个重要的用户
2、sys是超级管理员,必须作为sysdba登录,因为sys的权限太大,使用sysdba登录
后,审计文件会记录登录的时间信息,system没有sys的权限大.
3、最常用的做法是:日常管理中,不要使用sys和system登录数据库,而是建立一个用
户、并赋予DBA权限,使用该用户进行日常的管理工作.
数据库验证
创建用户表空间
create tablespace user01
logging
datafile '/u01/app/oracle/oradata/YJ/datafile/user01.dbf'
size 50m
autoextend on
next 32m maxsize 2048m
extent management local;
建立用户
create user devep identified by devep
default tablespace user01
temporary tablespace temp
quota 3M on user01
password expire;
其中:
IDENTIFIED BY
用于指定用户口令(数据库验证)
DEFAULT TABLESPACE
用于指定用户的默认表空间,建立数据对象(表、索引和簇)时,如果没有指定默认表空间,oracle会将system表空间作为用户的默认表空间.
TEMPORARY TABLESPACE
用于指定用户临时表空间,当用户执行排序操作时,若临时数据尺寸超过PG
A工作区,则会在该表空间建立临时段.
quota 3M on user01
如果建立用户时没有为表空间指定QUOTA子句,那么用户在特定表空间上的配额为0,用户将不能在相应表空间上建立数据对象
PASSWORD EXPIRE
SQL> connect devep/devep
ERROR:
ORA-01045: user DEVEP lacks CREA TE SESSION privilege; logon denied
由于没有给用户devep赋予登录数据库权限,这里报错01045
SQL> show user
USER is "SYS"
SQL> grant create session,create table to devep;
SQL> connect devep/devep
Connected.
SQL> show user
USER is "DEVEP" 可以登录了!
建表
SQL> create table t1(cola int);
显示表t1所在的表空间
select tablespace_name from user_segments where segment_name='T1'; 这里要用大写
TABLESPACE_NAME
------------------------------
USER01 ---------------- 建立用户devep时指定的默认表空间
查看devep用户在表空间上的配额使用情况,where=DEVEP这里要用大写desc dba_ts_quotas
select username,tablespace_name,bytes,max_bytes from dba_ts_quotas where username='DEVEP'; USERNAME T ABLESPACE_NAME BYTES MAX_BYT ES
------------------------------ ------------------------------ ---------- ----------
DEV EP USER01 65536 3145728
建立user02表空间
create tablespace user02
logging
datafile '/u01/app/oracle/oradata/YJ/datafile/user02.dbf'
size 50m
autoextend on
next 32m maxsize 2048m
extent management local;
用户devep尝试在user02表空间建t2表
create table t2 (cola int) tablespace user02;
create table t2 (cola int) tablespace user02
*
ERROR at line 1:
ORA-01950: no privileges on tablespace 'USER02' 提示没有权限!这里稍后解决!
用于指定口令到期,最终强制用户在登录是改变口令
外部认证:操作系统认证
一个操作系统用户的账号是oracle,那么在数据库里面需要建立一个用户叫做ops$oracle,选择外部认证,这个用户登陆操作系统以后,就可以直接登陆数据库了,因为操作系统已经认证了这个用户.
CREATE USER "OPS$ORACLE" PROFILE "DEFAULT" IDENTIFIED EXTERNALLY DEFAUL T TABLESPACE "USERS" TEMPORARY TABLESPACE "TEMP" ACCOUNT UNLOCK; GRANT "CONNECT" TO "OPS$ORACLE";
1、对于普通用户来说,账号存储在数据字典的表里面,数据库没有启动以前,不能对用户进行认证。
2、对sys用户的认证方式有些特殊,因为sys用户需要在数据库还没有启动的情况下进行登录,对sys用户的认证主要有两种方式
操作系统认证
密码文件认证
操作系统认证
unix下面,如果用户属于DBA组,那么用户登录操作系统后就可以使
用sysdba进行登录
windows下面,如果用户属于ora_dba组,那么用户登录操作系统以
后,可以使用sysdba进行登录
是否使用操作系统认证,还取决于一个设置
在文件/u01/app/oracle/product/10.2.0/db_1/network/admin/ sqlnet.ora中如果下面这条记录的值为NONE:表示不能使用操作系统进行认证
SQLNET.AUTHENTICA TION_SERVICES=(NONE)
当SQLNET.AUTHENTICA TION_SERVICES=(NTS)时,或者没有这条记录,表示可以使用操作系统进行认证。
在数据库服务器上使用sqlplus / 即可登录oracle
远程连接oracle使用sqlplus /@YJ
远程登录Oracle,如何实现sys认证,就需要使用口令文件远程登录ORACLE,必须提供sys的密码,这是安全要求。但是密码文件有不能放在数据字典里面,只能存放在另外一个位置,那就是密码文件
1、在服务器上的密码文件
UNIX上位于$ORACLE_HOME/dbs
WINDOWS上位于$ORACL_HOME/database
ll /u01/app/oracle/product/10.2.0/db_1/dbs/orapwYJ
-rw-r----- 1 oracle oinstall 1536 Jan 29 19:49 /u01/app/oracle/product/10.2.0/db_1/dbs/orapwYJ 密码文件的文件名以$ORACLE_SID结尾,所以要与$ORACLE_SID一致