如何使用ldapdelete删除不正确设置的olc数据库?

我一直在经历这个教程,并不断收到错误 – 可能是因为我手动input – 所以我重试,进入后执行它

# 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 (eg, implementation specific) error (80) additional info: <olcSuffix> namingContext "dc=home,dc=local" already served by a preceding hdb database 

据我猜测,这意味着它不能完成ldapadd,因为它已经存在于同一个名称下。

我尝试使用( 从这里 )删除它:

 sudo ldapdelete 'dc=example,dc=local' 

并要求input密码,密码不起作用,并且在初始设置中没有任何设置为olcRootPW。

我如何在这种情况下使用ldapdelete,所以我可以重新设置这个数据库?

一般来说, cn = config的初始设置过程不是很容易,在这个过程中有很多方法可以让你自己拍摄。 但是,请记住, cn = config存储在slapd.d中的LDIF格式文件(通常在${prefix}/etc/openldap/ ),可以手动编辑(仔细地在slapd不运行时)。 所以,如果你已经locking了自己(没有RootDN / RootPW),或者以某种方式完全破坏了你的cn = config ,你可以随时修复它。

获得基本configuration的一个好方法是以旧式slapd.conf方式实际执行,然后将其转换为slapd.d (使用slaptest -f -F )一旦基本的东西(数据库,模块和RootDN / RootPW)进行sorting。

无法弄清楚如何删除数据库,但我刚刚开始,所以我清除了slapd和ldap-utils。

 sudo apt-get purge slapd ldap-utils 

并重新安装。