web-dev-qa-db-fra.com

Ensemble de répliques MongoDB avec authentification par mot de passe simple

J'ai un jeu de répliques MongoDB de 3 serveurs (1 principal, 1 secondaire, 1 arbitre; il s'agit du jeu de réplicas par défaut créé par l'installation en un clic de Google Cloud). Les 2 fichiers de configuration (mongod.conf) du serveur principal et du serveur secondaire ont été modifiés avec "security.authorization: enabled" ajouté.

L'utilisateur root est ajouté avec la commande MongoDB Shell suivante:

use admin
db.createUser({user:"root",pwd:"root",roles:["root"]})

Après le redémarrage des services MongoDB sur les serveurs principal et secondaire avec "Sudo service mongod restart", la connexion au jeu de réplicas devient instable.

rs.status () donne parfois le résultat comme

  • 1 principal, 1 inaccessible, 1 arbitre
  • 1 secondaire, 1 secondaire, 1 arbitre
  • 1 secondaire, 1 inaccessible, 1 arbitre

Comment configurer l'authentification par mot de passe de base (sans utiliser le fichier de clés) pour la réplique MongoDB définie de la bonne manière?

14
datdinhquoc

J'ai finalement trouvé la réponse. Le jeu de répliques MongoDB nécessite à la fois un compte utilisateur et un fichier de clés. Le fichier de clés semble être utilisé pour l'authentification entre les serveurs du jeu de réplicas, pas pour la connexion.

Créez le fichier de clé mongodb sur linux, copiez-le sur tous les serveurs db avec le mode 600 intact:

cd
openssl Rand -base64 741 > mongodb.key
chmod 600 mongodb.key

fichier mongod.conf:

replication:
  replSetName: rs0

security:
  authorization: enabled
  keyFile: /home/USERNAME/mongodb.key

Utilisateur administrateur:

(just like in question content)
11
datdinhquoc