![openldap 索引现有值](https://linux22.com/image/771889/openldap%20%E7%B4%A2%E5%BC%95%E7%8E%B0%E6%9C%89%E5%80%BC.png)
我有一个已经使用了一段时间的 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 文件夹及其内容的所有者。