2015-10-07 1 views
3

Я только что реализовал auth для mongodb, есть пользователь 'admin' в db 'admin' и 'appadmin' в db 'mydb' все работает нормально. ниже мои дБ Параметры входа:issue in run mongostat for auth enabled 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" 
      } 
     ] 
    } 
]. 

Если я запускаю следующее,

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 

Но когда я бегу

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

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

Так что я пытался добавить роль 'clusterMonitor' в 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] 

Какой лучший способ сделать mongostat в auth enabled mongoldb? Пожалуйста, помогите мне исправить проблему или предложить лучшие настройки авторизации. Примечание: моя MongoDB версия 3.0.6

ответ

3

, наконец, я получил решение, я добавляю несколько ролей администратора БД,

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" 
      } 
     ] 
    } 
] 

и запустить mongostat --username = админ --password = мойпароль --authenticationDatabase = admin, исправить проблемы

+0

будет '..." роль ":" root ", ....' выполнить то же самое? – ds011591

+0

Кажется, что «clusterMonitor» является ключом к запуску монгостата. –

+0

Не понимаю. Вы упомянули, что 'mongostat' терпел неудачу для' appadmin', но дал решение для пользователя 'admin'? Можете ли вы вставить вывод для 'mongostat --username = appadmin --password = mypassword --authenticationDatabase = mydb' – deppfx