openldap 索引现有值

openldap 索引现有值

我有一个已经使用了一段时间的 ldap 数据库。自然它已经充满了条目。

我最近尝试为 uid 设置索引以帮助搜索,我在 slapd.conf 文件中添加了以下内容

include         /etc/openldap/schema/core.schema
database bdb
suffix "dc=domain,dc=net"
directory /var/lib/ldap
index uid eq,pres


然后我运行了 slapindex

slapindex -f /etc/openldap/slapd.conf -b "dc=jhc,dc=net" uid

但这似乎没有起到作用,我不知道这部分是否正确,但为了取得任何进展,唯一有效的方法似乎是在 /etc/openldap/slapd.d/cn=config/ 中的 db ldif 文件中添加以下行

olcDbIndex: uid pres,eq

然后我再次运行 slapindex 并启动 ldap。现在搜索 uid 的速度快了很多,但对于数据库中已有的条目,并没有给出结果。当我执行 ldapsearch 并过滤 uid 时,只显示新条目,供参考,搜索如下,但我已经删除了我的 ldap 服务器的详细信息

ldapsearch  "cn=admin,dc=domain,dc=net" -b "cn=users,dc=domain,dc=net" "(uid=newuser)"

我缺少什么来获取已存在的要索引的条目?

答案1

对于遇到此问题的任何人来说,解决方案是迁移数据库并将新的索引属性添加到 config.ldif 文件中,对我来说,这是通过运行

slapcat -n 0 -l config.ldif
slapcat -n 2 -l data.ldif

然后删除 /etc/openldap/slapd.d 和 /usr/local/openldap/ 中的文件

编辑 config.ldif 文件并添加您的索引值,如果您有其他索引值,只需将它们复制给我,它看起来像这样

olcDbIndex uid eq

最后一步是将你的数据库和两个 ldif 文件添加回来

slapadd -c -F /etc/openldap/slapd.d -n 0 -l config.ldif
slapadd -c -F /etc/openldap/slapd.d -n 2 -l data.ldif

您现在应该能够启动 ldap,请确保您的 ldap 用户是 openldap 文件夹及其内容的所有者。

相关内容