Выполнить команду / файл скрипта в MongoDB Java - PullRequest
0 голосов
/ 14 сентября 2018

Я просматриваю половину Интернета, но ничего не нашел или устаревшие решения с db.eval().Отсюда и мой вопрос.

У меня есть код, использующий драйвер mongo 3.5.0:

MongoDatabase db = mongoClient.getDatabase 'mydb'
println db.runCommand( new BasicDBObject( eval:'db.version()' ) )

Исключение в потоке "main" com.mongodb.MongoCommandException: Команда завершилась с ошибкой 13: 'не авторизованна mydb выполнить команду {eval: "db.version ()", $ readPreference: {mode: "primaryPreferred"}, $ db: "mydb"} 'на локальном сервере: 27017.Полный ответ: {"ok": 0.0, "errmsg": "не разрешено на mydb выполнять команду {eval: \" db.version () \ ", $ readPreference: {mode: \" primaryPreferred \ "}, $db: \ "mydb \"} "," code ": 13," codeName ":" Unauthorized "} в com.mongodb.connection.ProtocolHelper.getCommandFailureException (ProtocolHelper.java:115) в com.mongodb.connection.CommandProtocol.execute (CommandProtocol.java:107)

Я могу запустить эту команду в оболочке:

mongo "mongodb://admin:admin@somehost:27003/mydb?replicaSet=myset" -eval 'db.version()'

вывод

3.6.6

Если я запускаю команду из оболочки:

db.runCommand( { 'eval':'db.version()' } )

Я также получаю

{"operationTime": метка времени (1536931496, 11), "ok": 0, "errmsg": "не разрешено на mydb выполнять команду {eval: \" db.version () \ ", $ db: \" mydb \ "}", "code": 13,"codeName": "Unauthorized"}

Пользователь, с которым я соединяюсь, выглядит так:

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

Чего мне не хватает?Нужны ли специальные привилегии для eval?

1 Ответ

0 голосов
/ 16 сентября 2018

Согласно документации mongodb, вам нужна роль, которая предоставляет anyAction для AnyResource .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...