Chinaunix首页 | 论坛 | 博客
  • 博客访问: 205945
  • 博文数量: 75
  • 博客积分: 2049
  • 博客等级: 大尉
  • 技术积分: 780
  • 用 户 组: 普通用户
  • 注册时间: 2009-04-08 12:37
文章分类

全部博文(75)

文章存档

2011年(1)

2010年(9)

2009年(65)

我的朋友

分类: LINUX

2009-05-18 09:07:33

第四章-用户创建与管理

4.1数据库的连接

基于操作系统的认证还和另外一个设置有关,我们可以在$ORACLE_HOME\network\admin下找到sqlnet.ora文件,这个文件中存在一个参数设置:SQLNET.AUTHENTICATION_SERVICES=(NTS)。这个文件由netca产生,如果安装软件时我们选择仅安装软件,那么这个文件可能并不存在,如果这个文件并不存在,那么本地认证将不可用。这个文件中的SQLNET.AUTHENTICATION_SERVICES参数设置为NTS,将启用系统认证;当这个参数被注释或者设置为NONE,那么操作系统认证将被关闭。

4.2用户的创建

创建用户的最简单语法如下:

CREATE USER user IDENTIFIED BY password;

更改缺省数据表空间的语法为:

Alter database default tablespace ;

更改缺省临时表空间的语法为:

Alter database default temporary tablespace ;

由于一直以来存在用户空间分配和使用问题,我们建议在创建用户时就为用户指定缺省的表空间。那么完善的创建用户的语句应该类似以下语句:

CREATE  USER IDENTIFIED BY < password >

DEFAULT TABLESPACE < tablespace_name >

TEMPORARY TABLESPACE < tablespace_name >;

4.3权限的授予

刚刚新建的用户需要CREATE SESSION的权限才能连接到数据库内部:

SQL> grant create session to eygle;

创建表权限:

SQL> grant create table to eygle;

Oracle的权限可以分为两类:

n         系统权限,每个系统权限允许用户执行一种或一类特定的数据库操作,例如CREATE SESSION就是一个系统权限。

n         对象权限,每个对象权限允许用户针对特定的对象种类执行一种特定的行为,例如CREATE TABLE就是一个对象权限。

这些权限可以通过oracle的视图DBA_SYS_PRIVS来查询,这个视图包含了被授予权限的用户信息(GRANTEE)以及具体的权限(PRIVILEGE)信息,如果授予权限时允许用户转授这个权限,那么ADMIN_OPTION就为YES:

查看用户获得的权限:

SQL> select * from dba_sys_privs where grantee=’eygel’

通常一个用户创建之后,我们授予用户两个角色就足够了,这两个角色是CONNECTRESOURCE。接下来来一下这两个角色是哪些权限的集合:

SQL> select * from dba_sys_privs where grantee=’CONNECT’

现在回顾一下,为了创建一个可以访问数据库的用户,我们可能需要执行如下步骤:

SQL> create user eygle identified by eygle

Default tablespace users

Temporary tablespace temp;

SQL> grant connect,resourse to eygle;

此处不需要对空间进行授权,因为在RESOURSE角色分配了无限制使用默认表空间的权限(UNLIMITED TABLESPACE

可以回收用户的UNLIMITED TABLESPACE权限:

SQL> revoke UNLIMITED TABLESPACE from eygle;

4.4外部认证

如果用户可以直接连接到操作系统,在创建用户时可以指定用户不通过口令,而是通过操作系统认证方式登录数据库:

SQL> create user ops$eygle identified externally default tablespace user;

SQL> grant connect to ops$eygle;

这样用户在登录数据库时就不需要显示输入口令

如果要改成数据库认证:

SQL> alter user eygle identified by eygle;

值得注意的是REMOTE_OS_AUTHENT应该被设置为FALSE以防止远程系统认证用户的登录:

SQL> alter system set remote_os_authent=false scope=spfile;

4.5如何切换用户身份

DBA管理数据库的过程中,经常需要切换为其他用户进行数据库维护,这就需要我们能够进行用户切换。

n         通过DBA用户连接数据库,从dba_users视图中查询得到oracle用户的口令加密串

SQL> select username.password from dba_user where username=’eygle’

n         然后可以修改这个用户的口令并连接到数据库:

SQL> alter user eygle identified by welcom;

n         在另外的session中,用DBA用户迅速将用户口令修改回原来的加密串(防止其他用户登录失败)

SQL> alter user eygle identified by values ‘VDFSDFDFD78FDS’

4.6通过代理用户连接数据库

如果试图通过其他用户身份登录,上面的方法必须要修改用户口令,在那一瞬登录的用户仍然可能获得口令错误的提示,所以在10Gr2中,oracle提供了一个更好的解决方案企业用户代理:Enterprise user proxy。也就是说,我们可以创建一个共有代理用户,这个用户可以被用于代理企业用户或其他用户向目标用户切换,这个代理权限通常通过类似以下语句进行授权:

Alter user target_user grant connect through proxy_user;

来看一下以下的测试:

SQL> create user proxy identified by pproxy;

SQL> grant connect to proxy;

SQL> alter user eygle grant connect through proxy;

SQL> connect proxy[eygle]/pproxy;

这个有点类似linuxsudo

 

 

 

 

阅读(1027) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~