5.2. 离线创建数据库

第二种数据库创建方法是离线进行,使用下面描述的 slapd 数据库工具。如果您需要创建数千条条目,使用上述 LDAP 方法会花费无法接受的长时间,那么此方法是最佳选择。这些工具读取 slapd 配置文件和一个输入 LDIF 文件,其中包含要添加条目的文本表示形式。对于支持这些工具的数据库类型,它们直接生成数据库文件(否则您必须使用上述在线方法)。首先,您需要确保在配置文件数据库定义中设置几个重要的配置选项。

suffix <dn> 

如前一节所述,此选项说明此数据库将保存哪些条目。您应该将其设置为您尝试创建的子树根的 DN。例如

suffix "o=TUDelft, c=NL" 

您应该确保指定一个目录,用于创建索引文件。

directory /usr/local/tudelft 

最后,您需要指定要构建哪些索引。这通过一个或多个索引选项来完成。

index {<attrlist> | default } [pres,eq,approx,sub,none]

例如

index cn,sn,uid pres,eq,sub
index objectClass eq

这将为 cn、sn 和 uid 属性创建存在、相等和子字符串索引,并为 objectClass 属性创建相等索引。有关此选项的更多信息,请参见配置文件部分。

一旦您根据自己的喜好配置了所有内容,您可以通过运行 slapadd(8) 程序来创建主数据库和关联的索引。

slapadd -l <inputfile> -f <slapdconfigfile> [-d <debuglevel>]
 [-n <integer>|-b <suffix>]

这些参数具有以下含义

-l <inputfile>

指定 LDIF 输入文件,其中包含要添加的文本格式条目(请查看下一节)。

-f <slapdconfigfile>

指定 slapd 配置文件,该文件指示在何处创建索引、要创建哪些索引等。

-d <debuglevel>

开启调试,如 <debuglevel> 所指定。调试级别与 slapd 的相同。有关更多详细信息,请参见 第 4.1 节

-n <databasenumber>

一个可选参数,用于指定要修改哪个数据库。配置文件中列出的第一个数据库是 1,第二个是 2,依此类推。默认情况下,使用配置文件中的第一个数据库。不应与 -b 结合使用。

-b <suffix>

一个可选参数,用于指定要修改哪个数据库。提供的后缀与数据库后缀指令匹配,以确定数据库编号。不应与 -n 结合使用。

有时可能需要重新生成索引(例如在修改 slapd.conf(5) 后)。这可以使用 slapindex(8) 程序完成。slapindex 的调用方式如下

slapindex -f <slapdconfigfile> [-d <debuglevel>] [-n <databasenumber>|-b <suffix>]

其中 -f、-d、-n 和 -b 选项与 slapadd(1) 程序的选项相同。slapindex 基于当前数据库内容重建所有索引。

slapcat 程序用于将数据库转储到 LDIF 文件。当您想要创建数据库的人工可读备份或想要离线编辑数据库时,这可能很有用。该程序的调用方式如下

slapcat -l <filename> -f <slapdconfigfile> [-d <debuglevel>] [-n <databasenumber>|-b <suffix>]

其中 -n 或 -b 用于选择使用 -f 指定的 slapd.conf(5) 中的数据库。相应的 LDIF 输出将写入标准输出或使用 -l 选项指定的文件。