Ldap

openldap 索引現有值

  • November 2, 2021

我有一個已經使用了一段時間的 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= 中的 db ldif 文件中配置/

olcDbIndex: uid pres,eq

然後我再次執行 slapindex 並啟動 ldap。現在搜尋 uid 的速度要快得多,但沒有給我一個結果,當我執行 ldapsearch 並過濾 uid 時,已經在 db 中的條目只顯示新條目,供參考,搜尋如下,但我已經取出了詳細資訊我的 ldap 伺服器

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

我缺少什麼來獲取已經存在的條目以進行索引?

對於遇到此問題的任何人,解決方案是必須遷移您的數據庫並將新的索引屬性添加到 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 文件夾及其內容的所有者。

引用自:https://serverfault.com/questions/1082101