2016-10-13 1 views
0

Nous avons une équipe de développement qui sort périodiquement un mongodump de DEV et le restaure à son hôte local pour le travail. Nous avons récemment implémenté l'authentification dans mongodb et j'aimerais pouvoir permettre à notre équipe de développement de faire un mongodump sur une seule DB afin de pouvoir la restaurer sur son hôte local.mongodb backup role - mongodump

J'ai un rôle qui hérite du rôle de sauvegarde d'Admin, mais c'est à notre administrateur de base de données de sauvegarder l'ensemble du système.

Ma question, comment autoriser l'utilisation de ce rôle de sauvegarde par un utilisateur spécifique (appelons-le "webdev") pour un DB spécifique (appelons-le "produits")?

Répondre

0

Vous pouvez créer un utilisateur dans la base de données products avec des autorisations de lecture:

> use products 
> db.createUser( { 
user: "webdev", 
pwd: "password", 
roles: [ "read" ] 
}) 

Rappelez-vous simplement appeler mongodump avec --excludeCollectionsWithPrefix=system

mongodump --excludeCollectionsWithPrefix=system 

Afin d'éviter les erreurs d'autorisation (en supposant que vous utilisez Mongo 3)

+0

C'était la réponse exacte! Merci beaucoup anresk – Govna

0

J'utilise la version MongoDB3.4, Tout d'abord vous voulez un accès root pour la base de données admin et connectez mongo shell,

$ mongo -u nom d'utilisateur -p xxxxxx --authenticationDatabase admin

Après avoir connecté mongoshell, changer la base de données,

> use products

Après le changement de la DB créer le nouvel utilisateur,

> db.createUser( { user: "webdev", pwd: "xxxxx", roles: [ { role: "read", db: "products" }, { role: "backup", db: "products"} ] } )

Ci-dessus j'ai mentionné, webdev utilisateur peut être capable de lire toutes les collections et prendre l'accès de sauvegarde aussi.

> db.auth('webdev', 'xxxxx')

après authentification avec succès, vous pouvez capable de lire et de prendre la sauvegarde de DEV serveur. Ci-dessous j'ai mentionné la requête de mongodump avec le nouvel utilisateur de webdev de

mongodump --host hostname --port 27017 --username webdev --password xxxxx --authenticationDatabase products --db products --collection collection_name --out mongodump_outpath

Reportez-vous: https://docs.mongodb.com/manual/reference/built-in-roles/#backup

Note:

  1. Ne prenez pas mongodump souvent dans la production. Cela aura un impact sur le problème de performance .
  2. Ne donnez pas de sauvegarde et de rétablir l'accès à toutes les autres équipes comme développeur, testeur , etc ..
  3. Admin ou DBA uniquement faire à chaque fois que la sauvegarde/restauration.

    Merci. S'il vous plaît revenir pour toute préoccupation.

+0

Pourquoi avez-vous besoin du rôle 'lire' aussi? – UpTheCreek

+0

@UpTheCreek, Avant d'aller faire une sauvegarde si vous avez besoin de vérifier les DB ou les collections ou de lire certaines données spécifiques .... etc –