Chinaunix首页 | 论坛 | 博客
  • 博客访问: 103631403
  • 博文数量: 19283
  • 博客积分: 9968
  • 博客等级: 上将
  • 技术积分: 196062
  • 用 户 组: 普通用户
  • 注册时间: 2007-02-07 14:28
文章分类

全部博文(19283)

文章存档

2011年(1)

2009年(125)

2008年(19094)

2007年(63)

分类:

2008-04-14 13:24:09

  来源:IBM.com    作者:Ted J. Wasserman Raul F. Chong

DB2 UDB 实例所有者用户帐户:

要拥有和启动 DB2 UDB 实例,需要一个本地或域帐户。可以在安装 DB2 UDB 之前创建 DB2 UDB 实例所有者用户帐户,也可以让 DB2 安装向导来创建。如果让 DB2 安装向导创建新的域用户帐户,执行安装使用的用户帐户必须具有创建域用户帐户的权限。该用户帐户也必须是执行安装的机器上 Administrators 组的成员。DB2 安装向导创建该帐户时自动授予下列用户权限:

作为操作系统的一部分: 调试程序、创建 token 对象、增加配额、锁定内存页、作为服务登录、代替进程级的 token。

如果创建或指定了不同的帐户,一定要赋予该帐户上述用户权限。为了保证正确设置了这些权限,打开 Windows 控制面板(Start > Settings > Control Panel)并双击 Administrative Tools 图标。双击 Local Security Policy 图标。对于上面列出的每种策略,保证该用户包含在授权的用户和组列表中。提供的口令不正确会造成 DB2 UDB 启动过程中无法加载服务,有可能禁止执行特定的动作。

在默认 Windows 安装中将自动创建一个名为 DB2 的实例。可以分别使用 db2icrt 和 db2idrop 工具程序创建其他实例或删除已有的实例。这些工具放在 DB2PATH\sqllib\bin 目录中,其中 DB2PATH 是安装 DB2 UDB 的位置。运行这些工具程序必须使用具有本地 Administrator 权限的用户帐户。如果创建实例时通过参数提供用户帐户和口令,那么将使用该帐户拥有和启动该服务。如果没有提供用户帐户和口令,则使用 LocalSystem 帐户。比如,下面的命令将创建一个新实例 devinst,并赋予 LocalSystem 帐户拥有和启动该实例进程的权限:

清单 5. 在 Windows 中创建新的 DB2 UDB 实例db2icrt devinst。

修改帐户信息:

安装后可以修改与每个 DB2 UDB 服务关联的用户帐户。此外,从 DB2 UDB Version 8.2 开始,可以使用内置的 LocalSystem Account(LSA)帐户启动 DB2 UDB 服务。在使用严格口令策略的系统上,使用 LSA 可能比较有利,因为 LSA 没有关联的口令。比如在有些环境中,要求用户每两个月换一次口令,否则其帐户就会被暂时锁住。这一策略要求修改指定用户帐户的口令来启动 DB2 UDB 服务。如果配置成启动某些服务的用户帐户被锁住,或者用户帐户的口令被修改了,但是没有在服务启动属性配置中更新,这些服务将无法启动。

在将任何 DB2 UDB 服务从专门的用户帐户移交给 LocalSystem 帐户之前,必须考虑到 LocalSystem 帐户不能访问 LAN 共享,因为不能在其他计算机上验证身份。因此必须保证 DB2 UDB 系统不使用其他机器上的任何文件资源。

在 LocalSystem Account(LSA)上下文中运行的应用程序使用本地的 DB2 UDB 隐式连接。如果开发在该帐户下运行的应用程序,必须知道 DB2 UDB 关于对象模式名以 “SYS” 开头的限制。如果应用程序包含创建 DB2 UDB 对象的语句,应该这样写:

对于静态 SQL,必须为 QUALIFIER 选项绑定一个值而不能使用默认值。

对于动态 SQL,要创建的对象必须显式地用 DB2 UDB 支持的模式名限制,否则必须将 CURRENT SCHEMA 注册表变量设置为某个模式。

图 4 列出了一些在活动 DB2 UDB 系统上运行的 DB2 UDB 进程。可以看到,每个进程都有一个相关的所有者(用户名)。关于与 DB2 UDB 有关的所有进程的说明,请参阅 “Everything You Wanted to Know About DB2 Universal Database Processes”(developerWorks,2003 年 4 月)。

图 4. 查看运行的 DB2 UDB 进程

要改变用于启动 DB2 UDB 服务的用户帐户,打开 Services 面板(Start > Settings > Control Panel > Administrative Tools > Services)。右击 DB2 UDB 服务查看其属性。单击服务属性窗口(图 5)上方的 Log On 选项卡。在该选项卡中,可以指定服务启动时使用的用户帐户,或者指定为 LSA。单击 OK 保存修改,关闭该服务的属性窗口。

图 5. DAS 服务登录属性窗口

一般来说,应该使用单独的、可标识的用户帐户来启动 DB2 UDB 服务。但是,环境中对用户帐户的控制越紧,就越有可能使用已有的用户帐户或者 LocalSystem 帐户启动这些服务。一旦设置一个帐户来运行某项服务,就不能删除该帐户,否则与该帐户相关的服务就无法启动。即便使用相同的名称重新创建该帐户也不能解决。在这种情况下,必须像前面所述的那样手工进入服务面板,重新配置启动该服务使用的用户帐户。

DB2USERS 和 DB2ADMNS 组:

从 DB2 UDB Version 8.2 开始,为 Windows 环境下的 DB2 UDB 增加了一些安全特性。作为 DB2 UDB 安装的一部分出现了一个新的选项,即在操作系统中创建两个新的组:DB2USERS 和 DB2ADMNS。一旦创建了这两个组,只有是这些组的成员的用户帐户才能访问系统上的 DB2 UDB 文件(包括命令和 DB2 UDB 创建的用户数据文件)。

可以改变这些组的名称,但应该尽量使用默认的名称。如果和已有的组名冲突,就会提示修改组名。如果在初始 DB2 UDB 安装中没有选择该选项,以后可以运行 db2secv82.exe 程序来启用。该程序在 DB2PATH\SQLLIB\BIN\ 目录中,其中的 DB2PATH 是安装 DB2 UDB 的位置。为了最大程度地保护服务器,应该启用该选项。

图 6 显示了启用该安全特性的情况。服务器文件系统中所有的 DB2 UDB 文件夹都要求用户必须是这两个组之一的成员,才能访问 DB2 UDB 文件夹和文件。

图 6. 启用新的 Windows 安全特性后的文件夹权限

一旦使用 db2secv82.exe 命令启用了这种额外的安全特性,有两种办法可以取消:

立即再次运行 db2secv82.exe 命令,不对系统做任何改变。如果已经对系统做了任何改变,只能使用下面的方法。

将 EVERYONE 组添加到 DB2ADMNS 和 DB2USERS 组:

如果启用扩展安全特性,DB2 UDB 注册表变量 DB2_EXTSECURITY 将设置为 YES。这就告诉 DB2 UDB 需要进行附加的安全检查。如果创建 DB2ADMNS 和 DB2USERS 组后将 DB2_EXTSECURITY 的值改为 NO,文件和文件夹的访问权限仍然属于这两个组,但是 DB2 UDB 将不执行额外的安全检查。

Linux 和 UNIX 操作系统上需要的用户和组帐户

NIS/NIS+ 的问题:

如果环境中使用了 NIS/NIS+ 或者类似的安全软件,必须在安装 DB2 UDB 之前 手工创建需要的 DB2 UDB 用户和组帐户。安装之前请参考 DB2 UDB 文档中的 NIS 主题(请参阅 参考资料)。

在 Linux 和 UNIX 操作系统中,安装和操作 DB2 UDB 通常需要几个用户和组帐户:

1、Installation 用户帐户

2、DB2 Administration Server(DAS)用户帐户

3、DB2 UDB 实例所有者用户帐户

4、DB2 UDB fenced 例程用户帐户

默认情况下,DB2 安装向导在 DB2 UDB 服务器安装过程中将自动创建这些用户和组帐户。也可以在安装过程中指定已有的用户帐户。

Installation 用户帐户:

必须使用 “root” 帐户安装 DB2 UDB。这是具有足够权限执行安装的惟一帐户。

实例所有者用户帐户:

在实例所有者的主目录中创建 DB2 UDB 实例。该用户帐户控制所有的 DB2 UDB 进程,拥有该实例所含数据库使用的全部文件系统和设备。在 DB2 UDB 安装过程中,DB2 UDB 实例所有者使用的默认用户 ID 是 db2inst1,默认组是 db2iadm1。如果该用户名已经存在,DB2 安装向导就会在默认的名称后面增加一个 1-99 的数字,直到遇到一个不存在的用户 ID。比方说,如果安装新的 DB2 UDB 时用户 db2inst1 和 db2inst2 已经存在,向导就会创建用户 db2inst3。如果该用户已经存在,向导就会继续搜索(db2inst4、db2inst5 等等),直到发现可用的用户。这种命名算法也适用于 fences 用户帐户和 DB2 管理服务器用户帐户的创建。

一种好的办法是将实例所有者用户帐户限制在实例所有者组中,不在其他任何组中包含它。这样有助于控制可以修改实例或者实例中任何对象的用户帐户和组的数量。

在默认的 Linux 或 UNIX 安装中,可以选择在安装过程中创建一个实例。也可以在以后使用 db2icrt 和 db2idrop 工具程序创建其他实例或者删除已有的实例。这些工具位于 DB2PATH/instance 目录中,其中 DB2PATH 在 AIX 上代表 /usr/opt/db2_08_01,在其他基于 Linux 和 UNIX 的系统上代表 /opt/IBM/db2/V8.1。运行这些工具程序必须使用 root 用户帐户。在 Linux 和 UNIX 上使用 db2icrt 工具创建新实例时,必须指定与该实例关联的 fenced 用户帐户。选择的实例名必须映射到将成为实例所有者的用户帐户名。比方说,要把已有的用户帐户 prodinst 作为新实例的所有者,应该在 db2icrt 命令中指定 prodinst 作为实例名。该实例将在拥有它的用户的主目录中创建。比如,下面的命令创建了一个新实例 devinst,它属于 devinst 用户帐户,并使用已有的用户帐户 devfenc 作为 fenced 用户帐户:

清单 6. 在 Linux 和 UNIX 上创建新的 DB2 UDB 实例 db2icrt -u devfenc devinst。

DB2 UDB 不支持直接以 root 帐户作为数据库管理员。应该使用 su - 命令切换到数据库管理员(实例所有者)帐户。

DB2 Administration Server 用户帐户:

DB2 Administration Server(DAS)用户帐户用于在系统上运行 DAS 进程。默认安装过程中创建的默认用户 ID 是 dasusr1,默认组是 dasadm1。DB2 UDB GUI 工具还使用 DAS 帐户对本地服务器实例和数据库执行管理任务。每台机器上只需要一个 DAS。它可以管理服务器上定义的所有实例。DAS 用户帐户必须不同于实例所有者用户帐户。

一旦使用该帐户启动 DAS 进程,也必须使用该帐户停止。因此在 Linux 或 UNIX 上,必须使用 su - 命令切换到 DAS 用户帐户以便启动和结束 DAS 进程。

fenced 用户帐户:

fenced 用户帐户用于在 DB2 UDB 引擎使用的地址空间(内存)之外运行用户定义函数(UDF)和存储过程。有时候,如果一个过程或函数不稳定或者在测试中,那么应该将其定义为 FENCED,这样就可以在自己的进程地址空间中运行。这样,如果该函数或过程崩溃或者异常终止,也不会对其他实例进程产生任何影响。为 fenced 用户创建的默认用户帐户是 db2fenc1,默认的组是 db2fadm1。由于安全的原因,我们建议不要使用实例所有者帐户作为 fenced 用户帐户。如果不需要这个层次的安全,比方说是在测试环境中运行,或者不准备使用 fenced UDF 或存储过程,可以直接使用实例所有者帐户而不必创建其他用户帐户。在创建新的实例时,必须在实例创建命令中指定 fenced 用户帐户(db2icrt ... -u )。

为其他 Linux 和 UNIX 用户建立 DB2 UDB 环境:

Linux 和 UNIX 环境在用户级上强制实施高安全策略,与一个用户帐户关联的文件和进程不能被其他用户直接访问。默认情况下,创建新的 DB2 UDB 实例时,一个特殊的 DB2 UDB 环境脚本 db2profile 也被添加到实例所有者的系统配置文件中,每次实例所有者登录到系统时都要使用该文件。这些脚本设置对数据库环境的访问,允许实例所有者执行 DB2 UDB 命令。为了让系统上的其他用户访问实例和 DB2 UDB 环境,他们也必须运行同样的脚本。一种办法是 “提供” DB2 UDB 实例所有者的 .profile 文件(或者该 .profile 文件引用的 db2profile 文件)。如果使用 Bourne 或 Korn shell ,那么可以编辑目标用户帐户的 .profile 文件,使该用户登录到系统时自动运行 db2profile 脚本。对于 C shell 用户,可以编辑 .login 文件让它运行 db2shrc 脚本文件。为了选择要使用的实例,请在 .profile 或 .login 脚本文件中添加下面的语句,或者在用户需要访问 DB2 UDB 的终端窗口中发出该语句(注意需要句点(.)和空格):

Bourne 或 Korn shell: . INSTHOME/sqllib/db2profile

C shell: source INSTHOME/sqllib/db2cshrc 其中 INSTHOME 是要使用的实例的主目录。

对于主目录中有自定义脚本版本的用户:

Bourne 或 Korn shell: . USERHOME/db2profile

C shell: source USERHOME/db2cshrc,其中 USERHOME 是用户的主目录。

如果需要同时使用多个实例,那么对使用的每个实例在单独的 终端窗口中运行该脚本。

调度程序用户帐户

如果要启用 DB2 UDB 中的调度设施,需要一个调度程序用户帐户。如果工具目录数据库位于远程服务器上,DB2 UDB 调度程序将使用该帐户连接。工具目录数据库包含在 DB2 UDB 服务器上调度运行的所有任务的元数据(比如计划在每个周日早上一点钟运行的备份任务)。调度设施的设计不要求存放工具目录数据库和计划运行任务的 DB2 UDB 服务器是同一个服务器。在这种情况下,DB2 UDB 服务器上的调度程序需要连接到工具目录数据库,以便检索运行任务需要的信息。

调度程序帐户由 DAS 配置参数 SCHED_USERID 控制。只有当工具目录数据库和 DB2 管理服务器不在同一台机器上时该参数才有用。可以使用 db2 get admin cfg 命令查看该参数的值。

要修改该参数的值,可使用 db2admin setschedid 命令,其中 是调度程序用于连接到远程工具目录数据库的用户 ID 和口令。

清单 7 显示了将调度程序 ID 设为 xtradba 的情况。

清单 7. 可配置 DAS 参数及其值的清单

C:\>db2 get admin cfg

Admin Server Configuration

Authentication Type DAS                (AUTHENTICATION) = SERVER_ENCRYPT

DAS Administration Authority Group Name  (DASADM_GROUP) =

DAS Discovery Mode                           (DISCOVER) = DISABLE
Name of the DB2 Server System               (DB2SYSTEM) = TEDWAS
Java Development Kit Installation Path DAS   (JDK_PATH) =
C:\Program Files\IBM\SQLLIB\java\jdk\
Java Development Kit Installation Path DAS   (JDK_64_PATH) =

 DAS Code Page                            (DAS_CODEPAGE) = 0
 DAS Territory                           (DAS_TERRITORY) = 0

 Location of Contact List                 (CONTACT_HOST) =
 Execute Expired Tasks                   (EXEC_EXP_TASK) = NO
 Scheduler Mode                           (SCHED_ENABLE) = ON
 SMTP Server                               (SMTP_SERVER) =
 Tools Catalog Database                    (TOOLSCAT_DB) = TOOLSDB
 Tools Catalog Database Instance         (TOOLSCAT_INST) = DB2
 Tools Catalog Database Schema         (TOOLSCAT_SCHEMA) = TOOLSDB
 Scheduler User ID                                = xtradba

结束语

本文考察了 DB2 UDB 和用户/组帐户的基本交互。总结了 DB2 UDB 如何执行用户身份验证和用户/组授权,以及如何为 DB2 UDB 实例定义超级用户。还介绍了 DB2 UDB 安装需要和/或创建的默认用户和组帐户,以及如何配置它们。更好地理解用户/组帐户与 DB2 UDB 的交互,可以为您的环境计划和实现最优化的用户/组帐户设置。

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