文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>第四章-用户创建与管理

第四章-用户创建与管理

时间:2009-05-18  来源:sinxadmin

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta name="ProgId" content="Word.Document"><meta name="Generator" content="Microsoft Word 11"><meta name="Originator" content="Microsoft Word 11"><link rel="File-List" href="file:///C:%5CDOCUME%7E1%5Cgehj%5CLOCALS%7E1%5CTemp%5Cmsohtml1%5C01%5Cclip_filelist.xml"><style> </style>

第四章-用户创建与管理

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 <tablespace_name>;

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

Alter database default temporary tablespace <tablespace_name>;

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

CREATE  USER <username> 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’

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

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;

这个有点类似linux的sudo。

 

 

 

 

相关阅读 更多 +
排行榜 更多 +
挖掘机卡车

挖掘机卡车

模拟经营 下载
我的汤姆猫小米版

我的汤姆猫小米版

模拟经营 下载
我的小小邮轮

我的小小邮轮

模拟经营 下载