在Debian上,不能在OpenLDAP 2.4中使用BDB安装新的数据库

我试图在Debian EC2实例上安装一个openldap服务器(slapd)。 我已经按照我能find的所有说明,并使用推荐的slapd-config方法进行configuration。 这一切似乎都很好,除了由于某种原因,它不能创build我的新数据库。

ldap.conf.bak(重新命名以确保它不被使用):

########## # Basics # ########## include /etc/ldap/schema/core.schema include /etc/ldap/schema/cosine.schema include /etc/ldap/schema/nis.schema include /etc/ldap/schema/inetorgperson.schema pidfile /var/run/slapd/slapd.pid argsfile /var/run/slapd/slapd.args loglevel none modulepath /usr/lib/ldap # modulepath /usr/local/libexec/openldap moduleload back_bdb.la database config #rootdn "cn=admin,cn=config" rootpw secret database bdb suffix "dc=example,dc=com" rootdn "cn=manager,dc=example,dc=com" rootpw secret directory /usr/local/var/openldap-data ######## # ACLs # ######## access to attrs=userPassword by anonymous auth by self write by * none access to * by self write by * none 

当我运行slaptest时,它会抱怨找不到id2entry.bdb文件:

 root@server:/etc/ldap# slaptest -f ldap.conf.bak -F slapd.d bdb_db_open: database "dc=example,dc=com": db_open(/usr/local/var/openldap-data/id2entry.bdb) failed: No such file or directory (2). backend_startup_one (type=bdb, suffix="dc=example,dc=com"): bi_db_open failed! (2) slap_startup failed (test would succeed using the -u switch) 

当然,使用-u开关是有效的。 但是,这只是创buildconfiguration。 它不能解决根本问题:

 root@server:/etc/ldap# slaptest -f ldap.conf.bak -F slapd.d -u config file testing succeeded 

查看数据库目录,基本文件在那里(拥有正确的所有权,在手动chown之后),但是没有创builddbd文件:

 root@server:/etc/ldap# ls -al /usr/local/var/openldap-data total 4328 drwxr-sr-x 2 openldap openldap 4096 Mar 1 15:23 . drwxr-sr-x 4 root staff 4096 Mar 1 13:50 .. -rw-r--r-- 1 openldap openldap 3080 Mar 1 14:35 DB_CONFIG -rw------- 1 openldap openldap 24576 Mar 1 15:23 __db.001 -rw------- 1 openldap openldap 843776 Mar 1 15:23 __db.002 -rw------- 1 openldap openldap 2629632 Mar 1 15:23 __db.003 -rw------- 1 openldap openldap 655360 Mar 1 14:35 __db.004 -rw------- 1 openldap openldap 4431872 Mar 1 15:23 __db.005 -rw------- 1 openldap openldap 32768 Mar 1 15:23 __db.006 -rw-r--r-- 1 openldap openldap 2048 Mar 1 15:23 alock 

(注意,因为我以root身份执行此操作,所以我还必须更改由slaptest创build的一些文件的所有权)

最后,我可以启动slapd服务,但是它在尝试(来自syslog的文本)中死了:

 Mar 1 15:06:23 server slapd[21160]: @(#) $OpenLDAP: slapd 2.4.23 (Jun 15 2011 13:31:57) $#012#011@incagijs:/home/thijs/debian/pu/openldap-2.4.23/debian/build/servers/slapd Mar 1 15:06:23 server slapd[21160]: config error processing olcDatabase={1}bdb,cn=config: Mar 1 15:06:23 server slapd[21160]: slapd stopped. Mar 1 15:06:23 server slapd[21160]: connections_destroy: nothing to destroy. 

我手动检查了olcDatabase = {1} bdb文件,这对我的业余爱好者来说看起来很好。 我所有的具体configuration都在那里。 不幸的是,在这种情况下,系统日志不报告一个特定的错误(如果它是一个文件权限错误,它会说)。 我已经尝试卸载并重新安装slapd,更改权限,search我的智慧,但我被挖掘出来。 任何OpenLDAP的天才,将不胜感激!

几个小时前我也有同样的问题。 我在OpenLDAP 2.4.25中使用OpenBSD 5.0。 我发现这不是LDAP的错误,而是Berkeley DB的错误。 我发现一些帮助指向db_recover工具来解决这个问题。 但是我的数据库是空的,因为我认为你的数据库也是。

所以我简单地创build了另一个数据库,对所有文件( /var/openldap-data )进行了备份,但DB_CONFIG,删除了除DB_CONFIG之外的所有文件,并重新启动了守护进程。 在此之后,到目前为止,我的OpenLDAP运行良好。