7 votes

Comment corriger l'échec d'Open Directory (la base de données "cn=authdata" ne peut pas être ouverte, err 12) après un blocage ?

Un serveur Mac OS X Lion 10.7.5 utilisant Open Directory s'est bloqué. SSH était toujours possible mais le sudo reboot n'a pas redémarré le serveur dans les 15 minutes. C'est pourquoi un cycle d'alimentation a été lancé. Après le cycle d'alimentation, Open Directory ne démarrait plus et le journal du système était rempli d'un nouveau message toutes les 10 secondes :

com.apple.launchd[1] (org.openldap.slapd[1153]): Exited with code: 1
com.apple.launchd[1] (org.openldap.slapd): Throttling respawn: Will start in 10 seconds

La réparation des autorisations du disque et un autre redémarrage ne résolvent pas le problème.

Slapd dans les sorties du mode outil :

$ sudo /usr/libexec/slapd -Tt
bdb(dc=nl2,dc=probackup,dc=nl): unable to allocate memory for mutex; resize mutex region
bdb_db_open: database "dc=nl2,dc=probackup,dc=nl" cannot be opened, err 12. Restore from backup!
backend_startup_one (type=bdb, suffix="dc=nl2,dc=probackup,dc=nl"): bi_db_open failed! (12)
slap_startup failed (test would succeed using the -u switch)

Comment résoudre ce problème ?

14voto

Pro Backup Points 3456

Vérifier si la base de données du DO est à l'origine du problème

$ sudo /usr/libexec/slapd -Tt

Aucune autre action n'est nécessaire si la sortie indique quelque chose comme :

...
bdb_db_open: database "dc=hostname,dc=domainname,dc=tldname": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
...

Essayer la réparation

Pour réparer la base de données Open Directory authdata :

$ sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

Lancez maintenant la récupération de la base de données à l'aide de la commande ci-dessous qui correspond à la version de votre système d'exploitation.

$ sudo db_recover -h /var/db/openldap/authdata/ # Mac OS X 10.7
$ sudo db_recover -h /var/db/openldap/openldap-data/ # Mac OS X 10.6

Maintenant, slapd en mode outil produit des sorties :

$ sudo /usr/libexec/slapd -Tt
bdb_db_open: database "dc=nl2,dc=probackup,dc=nl": unclean shutdown detected; attempting recovery.
bdb_db_open: database "dc=nl2,dc=probackup,dc=nl": recovery skipped in read-only mode. Run manual recovery if errors are encountered.
bdb_monitor_db_open: monitoring disabled; configure monitor database to enable
config file testing succeeded

Activez à nouveau l'Open Directory :

$ sudo launchctl load /System/Library/LaunchDaemons/org.openldap.slapd.plist

Et de procéder à un nouveau redémarrage par mesure de précaution :

$ sudo reboot

Open Directory devrait maintenant fonctionner à nouveau. Si ce n'est pas le cas, essayez ci-dessous.

Essayez la restauration Time Machine

Commencez par consulter les versions rétrocédées disponibles :

$ ls /Volumes/Time\ Machine/Backups.backupdb/*/

Choisissez la version la plus récente lorsque Open Directory fonctionnait encore correctement, par exemple 2018-07-22-091106 .

Recommencez à décharger le démon.

$ sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

Ensuite, supprimez (ou renommez) le répertoire de la base de données (s'il est disponible, Time Machine ne restaurera pas correctement) et lancez la restauration :

$ sudo rm -rf /var/db/openldap/ && sudo tmutil restore -v /Volumes/Time\ Machine/Backups.backupdb/*/2018-07-22-091106/Macintosh\ HD/var/db/openldap/ /var/db/

Forcer la réparation de la base de données :

$ sudo db_recover -cv -h /var/db/openldap/openldap-data/

Réparer les autorisations et redémarrer :

$ sudo diskutil repairPermissions / && sudo reboot

6voto

rbn Points 51

Voici comment je répare habituellement une panne de LDAP/OD

1. vérifier si c'est le problème

sudo /usr/libexec/slapd -Tt *

Vous pourriez obtenir : bdb_db_open : database "cn=authdata" : db_open(/var/db/openldap/authdata/id2entry.bdb) failed : Argument non valide (22).

2. Arrêter LDAP sur l'OD Master

sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

3. Réparer les autorisations

diskutil repairPermissions /

4. sauvegarde de la base de données openldap

sudo cp /var/db/openldap/authdata/id2entry.bdb /var/db/openldap/authdata/id2entry.bdb.backup

5. réparation

sudo db_recover -cv -h /var/db/openldap/openldap-data/

6. Exécutez à nouveau le programme de réparation pour vérifier

sudo db_recover -cv -h /var/db/openldap/openldap-data/

7. le faire encore une fois pour que les choses soient réparées correctement

sudo /usr/libexec/slapd -Tt

8. redémarrer le service

sudo launchctl load /System/Library/LaunchDaemons/org.openldap.slapd.plist

9. Si cela ne fonctionne pas, essayez :

sudo db_recover -cv -h /var/db/openldap/authdata/

puis je redémarre le service à l'étape 8.

sudo launchctl load /System/Library/LaunchDaemons/org.openldap.slapd.plist

Cela résout généralement le problème... mais dans certains cas, il faut restaurer comme llange l'explique dans son message.

1voto

llange Points 524

La première chose à faire est de vérifier le disque. Vous pouvez le faire soit en utilisant la partition de récupération, soit en utilisant la partition mono-utilisateur ( cmd - S au démarrage) puis tapez :

fsck -fy

Clavier QWERTY le tiret est à 2 touches à gauche de l'espacement arrière.

Pour réimporter une base de données corrompue à partir d'une sauvegarde, vous devez sauvegarder et remplacer les fichiers/dossiers suivants :

  • var/db/openldap/
  • usr/bin/db_recover

Je ne suis pas sûr que ce soit nécessaire, mais si vous avez supprimé l'entrée LDAPv3 dans le trousseau de clés du système :

  • Bibliothèque/chaînes de clés/chaînes de clés du système

La tentative de récupération

Ensuite, vous devez réparer les permissions du disque à partir d'un terminal (pas d'un seul utilisateur) :

diskutil repairPermissions /

Si, après la récupération, vous rencontrez des problèmes de connexion aux services, vérifiez la configuration sous " Services "dans l'utilitaire d'annuaire.

0voto

not2savvy Points 1457

La réparation proposée dans la réponse acceptée n'a pas permis de résoudre mes problèmes. Cependant, restauration de la base de données à partir d'une sauvegarde Time Machine a été couronnée de succès :

  1. Déchargez OpenDirectory pour plus de sécurité : sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

  2. Ouvrez une fenêtre du Finder, puis sélectionnez Aller > Aller au dossier /var/db

  3. Renommer /var/db/openldap à quelque chose comme /var/db/openldap.corrupt

  4. Entrer dans la machine à remonter le temps

  5. Remontez le temps jusqu'à l'époque où vous saviez qu'OpenDirectory fonctionnait.

  6. Restaurer /var/db/openldap

  7. Exécutez une récupération sur les données restaurées :

    sudo db_recover -cv -h /var/db/openldap/openldap-data/ sudo db_recover -cv -h /var/db/openldap/authdata/

  8. Redémarrer Open Directory : sudo launchctl unload /System/Library/LaunchDaemons/org.openldap.slapd.plist

Une fois que MacOS Server a redémarré, OpenDirectory devrait être opérationnel.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X