我有一个 openLDAP,它有一个数据库dc=domain1,dc=com
。
现在我正尝试再添加 1 个dc=domain2,dc=com
。
以下是我们为实现这一目标所采取的步骤,
[root@host user]# service slapd stop
Stopping slapd: [ OK ]
[root@ host user ]# slapadd -f /etc/openldap/slapd.conf -l /tmp/domain2.ldif -S 001 -w
5ccd948f bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
slapadd: line 1: database #1 (dc=domain1,dc=com) not configured to hold "dc=domain2,dc=com"; no database configured for that naming context
_######### 46.62% eta none elapsed none spd 935.8 k/s
Closing DB...
[root@ host user ]# service slapd start
Starting slapd: [ OK ]
有人可以建议我该怎么做吗?
这是我的 domain2.ldif 内容:
dn: dc=domain2,dc=com
changetype: add
objectclass: top
objectclass: organization
dn: dc=mobileauth,dc=domain2,dc=com
changetype: add
objectclass: top
objectclass: dcObject
答案1
每个 OpenLDAP 后端都附加到特定的“后缀”,因此托管具有不同 DN 后缀的多个 DIT 需要配置多个后端数据库。例如:
database mdb
suffix "dc=domain1,dc=com"
directory "/var/lib/openldap/domain1"
index and other settings...
database mdb
suffix "dc=domain2,dc=com"
directory "/var/lib/openldap/domain2"
...
如果您使用 cn=config,这相当于有多个“olcDatabase”条目,例如:
dn: olcDatabase={1}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDbDirectory: /var/lib/ldap/domain1
olcSuffix: dc=domain1,dc=org
olcVariousOtherStuff...
dn: olcDatabase={2}hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDbDirectory: /var/lib/ldap/domain2
olcSuffix: dc=domain2,dc=org
...
当使用slap*
命令(slapadd、slapcat 等)时,您需要明确选择数据库(cn=config 是 #0,因此您的数据库可能从 #1 开始):
slapcat -n 1
slapcat -n 2
slapcat -b dc=domain1,dc=org
slapcat -b dc=domain2,dc=org