我一直在走过本教程并不断出现错误 - 可能是因为我手动输入了 - 所以我重试,在输入后执行它
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb
# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=example,dc=local
olcDbDirectory: /var/lib/ldap
它起作用了,因此我输入了其余部分并重新执行:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldif
现在它说
ldap_add: Other (e.g., implementation specific) error (80)
additional info: <olcSuffix> namingContext "dc=home,dc=local" already served by a preceding hdb database
我猜测,这意味着它无法完成 ldapadd,因为已经存在一个同名的 ldapadd。
我尝试使用(从这里):
sudo ldapdelete 'dc=example,dc=local'
它要求输入密码,但我的密码不起作用,并且在初始设置中没有设置任何内容作为 olcRootPW。
在这种情况下,我该如何使用 ldapdelete 以便重新设置该数据库?
答案1
通常,初始设置过程cn=配置并不容易,而且在这个过程中有很多方法会让你自食其果。不过,请记住cn=config 是存储在 LDIF 格式文件中slapd.d(通常在 中${prefix}/etc/openldap/
)并且可以手动编辑(小心地编辑,并且不要运行 slapd)。因此,如果您将自己锁定在外(没有 RootDN/RootPW)或完全损坏了您的cn=配置不管怎样,你总是可以在那里修复它。
进行基本配置的一个好方法是按照旧风格进行slapd配置文件时尚,然后将其转化为slapd.d(使用slaptest -f -F
)一旦基本内容(数据库,模块和 RootDN/RootPW)被排序。
答案2
无法弄清楚如何删除数据库,但我刚刚开始,所以我清除了 slapd 和 ldap-utils。
sudo apt-get purge slapd ldap-utils
并重新安装。