You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

OpenLDAP中如何配置两个同类型mdb后端数据库?

在OpenLDAP中配置两个MDB后端数据库的问题

我正尝试为两个域搭建OpenLDAP环境,了解到需配置两个数据库。此前参考方案使用bdb后端,但OpenLDAP已不再自带该后端,因此尝试配置第二个mdb后端数据库却未能成功。

用于创建数据库的ldif文件如下:

dn: olcDatabase=mdb2,cn=config
changetype: add
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDbDirectory: /var/lib/ldap2/
olcDatabase: mdb
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcLastMod: TRUE
olcSuffix: dc=domain2,dc=com
olcAccess: to attrs=userPassword by self write by anonymous auth by * none
olcAccess: to attrs=shadowLastChange by self write by users read
olcAccess: to * by users read
olcRootDN: cn=admin,dc=domain2,dc=com
olcRootPW: {SSHA}<HASH>

执行该ldif文件返回错误:value of single-valued naming attribute 'olcDatabase' conflicts with value present in entry

尝试将olcDatabase: mdb替换为olcDatabase: mdb2后,返回错误:Unrecognized database type (mdb2)

请问在OpenLDAP中是否可以配置两个使用相同后端的数据库?


问题解答

OpenLDAP完全支持配置多个同类型(比如MDB)的后端数据库,你的问题出在LDIF文件的配置细节上。

错误原因分析

  • 第一个错误:value of single-valued naming attribute 'olcDatabase' conflicts with value present in entry
    olcDatabase是单值属性,你在DN中写了olcDatabase=mdb2,但属性字段里填的是olcDatabase: mdb,两者不匹配导致冲突。
  • 第二个错误:Unrecognized database type (mdb2)
    OpenLDAP的数据库类型只有mdb,不存在mdb2这个类型,不能自定义后端类型名称。

正确的LDIF配置示例

要创建第二个MDB数据库,需满足两个核心要求:

  1. DN中的olcDatabase=<标识>可以用任意唯一名称(比如mdb2),但属性字段里的olcDatabase必须固定为mdb(对应官方支持的后端类型)
  2. olcDbDirectory必须是新的空目录,且OpenLDAP进程用户(通常是openldap)拥有读写权限

修正后的LDIF文件:

dn: olcDatabase=mdb2,cn=config
changetype: add
objectClass: olcDatabaseConfig
objectClass: olcMdbConfig
olcDbDirectory: /var/lib/ldap2/
olcDatabase: mdb
olcDbIndex: objectClass eq
olcDbIndex: cn,uid eq
olcDbIndex: uidNumber,gidNumber eq
olcDbIndex: member,memberUid eq
olcLastMod: TRUE
olcSuffix: dc=domain2,dc=com
olcAccess: to attrs=userPassword by self write by anonymous auth by * none
olcAccess: to attrs=shadowLastChange by self write by users read
olcAccess: to * by users read
olcRootDN: cn=admin,dc=domain2,dc=com
olcRootPW: {SSHA}<HASH>

额外操作步骤

  • 提前创建目录并设置权限:
    mkdir /var/lib/ldap2
    chown openldap:openldap /var/lib/ldap2
    chmod 700 /var/lib/ldap2
    
  • 执行LDIF文件的正确命令:
    ldapadd -Y EXTERNAL -H ldapi:/// -f your-file.ldif
    
  • 确保两个数据库的olcSuffix完全独立,避免请求路由冲突

内容的提问来源于stack exchange,提问作者JeffLee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 01:25:22