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

use*_*600 6 ubuntu openldap ldap

我一直在浏览本教程并不断收到错误 - 可能是因为我是手动输入的 - 所以我重试,输入后执行它

# 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
Run Code Online (Sandbox Code Playgroud)

它起作用了,所以我输入了其余部分并重新执行:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldif
Run Code Online (Sandbox Code Playgroud)

现在它说

ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcSuffix> namingContext "dc=home,dc=local" already served by a preceding hdb database
Run Code Online (Sandbox Code Playgroud)

正如我猜想的那样,这意味着它无法完成 ldapadd,因为已经存在同名。

我尝试使用 ( from here )删除它:

sudo ldapdelete 'dc=example,dc=local'
Run Code Online (Sandbox Code Playgroud)

它要求输入密码,但我的密码不起作用,并且在初始设置中没有将任何设置为 olcRootPW。

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

Ing*_*upp 5

一般来说,cn=config的初始设置过程不是很容易,在这个过程中有很多方法可以让你自己动手。但是,请记住cn=config存储在slapd.d(通常在${prefix}/etc/openldap/)中的 LDIF 格式文件中,并且可以手动编辑(在 slapd 未运行时小心)。因此,如果您将自己锁定在外面(没有 RootDN/RootPW)或以某种方式完全破坏了您的cn=config,您总是可以在那里修复它。

获得基本配置的一个好方法是实际以旧样式slapd.conf方式进行,然后在基本内容(数据库、模块和 RootDN/RootPW)排序后将其转换为slapd.d(使用slaptest -f -F)。


use*_*600 1

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

sudo apt-get purge slapd ldap-utils
Run Code Online (Sandbox Code Playgroud)

并重新安装。

  • 否决是因为尽管卸载然后重新安装可能有效,但这很少是正确的答案。伊格玛下面所说的是更好的建议。 (5认同)