OpenLDAP:不尊重olcDatabase的索引

我正在创build如下所示的数据库(从应用程序调用):

 $ ldapadd -Q -Y EXTERNAL -H ldapi:/// << EOF
 dn:olcDatabase = {20} mdb,cn = config
 objectClass:olcDatabaseConfig
 objectClass:olcMdbConfig
 olcDatabase:{20} mdb
 olcDbDirectory:/var/lib/ldap/domain.tld
 olcSuffix:dc = domain,dc = tld
 olcAccess:{0}到attrs = userPassword,shadowLastChange通过匿名身份validation通过* none
 olcAccess:{1}到dn.base =“”通过* read
 olcAccess:{2}通过*阅读
 olcRootDN:cn = user,dc = domain,dc = tld
 olcRootPW:{SSHA} XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
 olcDbCheckpoint:512 30
 olcDbIndex:objectClass eq
 olcDbIndex:cn,uid eq
 olcDbIndex:uidNumber,gidNumber eq
 olcDbIndex:member,memberUid eq

 EOF

OpenLDAP响应

adding new entry "olcDatabase={20}mdb,cn=config" 

但是mdb前面的索引号是不被尊重的。 实际上,数据库在olcDatabase={2}mdb.ldif

这在转储configuration时也可以看到:

 $ slapcat -b cn = config

 dn:olcDatabase = {2} mdb,cn = config
 objectClass:olcDatabaseConfig
 objectClass:olcMdbConfig
 olcDatabase:{2} mdb
 olcDbDirectory:/var/lib/ldap/domain.tld
 olcSuffix:dc = domain,dc = tld
 ...

每次添加新数据库时,索引都会增加。 这是有道理的,但我需要能够明确地设置,所以我的程序知道它的数据存储在哪里。

奇怪的是,我很确定它在一开始就工作。 我曾尝试重新安装(使用--purge )几次无济于事。

我在Debian上使用OpenLDap 2.4.40:

 Linux LINUX_LDAP_DEV 3.16.0-4-686-pae #1 SMP Debian 3.16.36-1+deb8u2 (2016-10-19) i686 GNU/Linux 

ldap.conf我只设置TLS_CACERT

查询cn=config以获得适当的olcSuffix并使用生成的dn,而不是依赖数字索引的外部知识。