2015-10-07 2 views
3

Je viens d'implémenter auth pour mongodb, Il ya un utilisateur 'admin' dans db 'admin' et 'appadmin' dans db 'mydb' tout fonctionne bien. ci-dessous sont mes db paramètres auth:problème dans run mongostat pour auth activé mongodb

use admin 
db.auth(‘’, ‘’) 
db.getUsers() 
[ 
    { 
     "_id" : "admin.admin", 
     "user" : "admin", 
     "db" : "admin", 
     "roles" : [ 
      { 
       "role" : "userAdminAnyDatabase", 
       "db" : "admin" 
      }, 
      { 
       "role" : "clusterMonitor", 
       "db" : "admin" 
      } 
     ] 
    } 
] 


use mydb 
db.auth() 
db.getUsers() 

    { 
     "_id" : "mydb.appadmin", 
     "user" : "mydb", 
     "db" : "mydb", 
     "roles" : [ 
      { 
       "role" : "readWrite", 
       "db" : "mydb" 
      }, 
      { 
       "role" : "userAdmin", 
       "db" : "mydb" 
      } 
     ] 
    } 
]. 

Si je lance ce qui suit,

mongostat --username=admin --password=mypassword --authenticationDatabase=admin 
insert query update delete getmore command flushes mapped vsize res faults qr|qw ar|aw netIn netOut conn  time 
    *0 *0  *0  *0  0  1|0  0 240.0M 678.0M 91.0M  0 0|0 0|0 79b 10k 1 11:49:18 
    *0 *0  *0  *0  0  1|0  0 240.0M 678.0M 91.0M  0 0|0 0|0 79b 10k 1 11:49:19 
    *0 *0  *0  *0  0  1|0  0 240.0M 678.0M 91.0M  0 0|0 0|0 79b 10k 1 11:49:20 

Mais quand je lance

* mongostat --username=appadmin --password=mypassword --authenticationDatabase=mydb 

     Failed: not authorized on admin to execute command { serverStatus: 1, recordStats: 0 }, 

J'essayé d'ajouter le rôle 'clusterMonitor' dans mydb .

db.updateUser(“appadmin”, {roles: [{role: "readWrite", db: “mydb”}, {role: "userAdmin", db: “mydb”}, {role: "clusterMonitor", db: “mydb”}]}) 
E QUERY Error: Updating user failed: No role named [email protected] 

Quelle est la meilleure façon de faire mongostat dans un mongoldb auth autorisé? Aidez-moi à résoudre le problème ou à suggérer les meilleurs paramètres d'authentification. Note: ma version 3.0.6 mongodb

Répondre

3

finalement je m'y suis la solution, j'ajouter d'autres rôles db admin,

use admin 
db.getUsers() 

    { 
     "_id" : "admin.admin", 
     "user" : "admin", 
     "db" : "admin", 
     "roles" : [ 
      { 
       "role" : "userAdminAnyDatabase", 
       "db" : "admin" 
      }, 
      { 
       "role" : "readWriteAnyDatabase", 
       "db" : "admin" 
      }, 
      { 
       "role" : "dbAdminAnyDatabase", 
       "db" : "admin" 
      }, 
      { 
       "role" : "clusterAdmin", 
       "db" : "admin" 
      }, 
      { 
       "role" : "clusterMonitor", 
       "db" : "admin" 
      } 
     ] 
    } 
] 

et exécutez mongostat --username = admin --password = mypassword --authenticationDatabase = admin, résoudre les problèmes

+0

serait '..." rôle ":" root ", ....' accomplir la même chose? – ds011591

+0

Il semble que 'clusterMonitor' est la clé pour exécuter mongostat. –

+0

Je ne comprends pas. Vous avez mentionné 'mongostat' échouait pour' appadmin', mais a donné une solution pour l'utilisateur 'admin'? Pouvez-vous coller la sortie pour 'mongostat --username = appadmin --password = mot de passe --authenticationDatabase = mydb' – deppfx