Este artículo explica como reinicializar la base de datos de un servidor OpenLDAP (con PostgreSQL como backend) para comenzar nuevamente con un directorio vacío. Típicamente es lo que se hace una vez que ha finalizado la etapa de testeo con los datos de prueba y se desea comenzar a trabajar con datos reales en producción.

Mediante los siguientes pasos se vacía completamente el directorio de un servidor LDAP. Esto elimina completamente todos los datos almacenados en la base de datos, con lo cual es recomendable generar un backup previamente.

ATENCIÓN: se perderán absolutamente todos los datos almacenados en la base de datos del servidor OpenLDAP (directorio).

Para comenzar, detener el servicio slapd:

# service slapd stop

Luego cambiar la usuario postgres:

# su - postgres

Cambiar al directorio de fuentes de OpenLDAP donde se encuentran los scripts SQL para la creación del backend Postgres:

$ cd /usr/local/src/openldap-2.4.45/servers/slapd/back-sql/rdbms_depend/pgsql

Eliminar y crear nuevamente las bases de datos:

$ psql -d pg_ldap < backsql_drop.sql
$ psql -d pg_ldap < backsql_create.sql
$ psql -d pg_ldap < testdb_drop.sql
$ psql -d pg_ldap < testdb_create.sql

NOTA: omitir la creación de los datos de prueba (testdb_data.sql y testdb_metadata.sql).

A continuación, otorgar permisos al usuario de bases de datos pg_ldap:

echo "grant all on ldap_attr_mappings,ldap_entries,ldap_entry_objclasses,ldap_oc_mappings,referrals,certs to ldap;
grant all on ldap_attr_mappings_id_seq,ldap_entries_id_seq,ldap_oc_mappings_id_seq,referrals_id_seq to ldap;
grant all on authors_docs,documents,institutes,persons,phones to ldap;
grant all on documents_id_seq,institutes_id_seq,persons_id_seq,phones_id_seq to ldap;" | psql -d pg_ldap

Cerrar la sesión de postgres:

$ exit

Actualizar la configuración de slapd:

# nano /usr/local/etc/openldap/slapd.conf

Ajustar adecuadamente las variables suffix, rootdn, rootpw. Esto ocurre en caso de haber cambiado el dominio de ejemplo por otro (por ejemplo "dc=linuxito,dc=com").

Iniciar nuevamente el servicio:

# service slapd start

Testear la conexión con la siguiente consulta ldapsearch:

# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts

Por ejemplo:

root@debian8:/usr/local/etc/openldap# ldapsearch -x -b '' -s base '(objectclass=*)' namingContexts
# extended LDIF
#
# LDAPv3
# base <> with scope baseObject
# filter: (objectclass=*)
# requesting: namingContexts 
#

#
dn:
namingContexts: dc=linuxito,dc=com

# search result
search: 2
result: 0 Success

# numResponses: 2
# numEntries: 1

De esta forma tenemos un directorio vacío listo para comenzar a trabajar nuevamente.


Tal vez pueda interesarte


Compartí este artículo