Не авторизован для выполнения какой-либо команды с помощью Service Connector на MangoDB.

Я использую MangoDb в своем приложении, и когда я пытаюсь получить доступ к базе данных напрямую с помощью служебного коннектора, я могу подключиться, но затем получаю:

Error: error: {
    "ok" : 0,
    "errmsg" : "not authorized on admin to execute command { *any command*}",
    "code" : 13
}

и это при любом запросе или команде.

Есть ли способ изменить авторизацию или доступ к данным моего MangoDb

P.S: Мой MangoDb был привязан, как в руководстве: https://docs.developer.swisscom.com/tutorial-python/bind-service.html


person Lggoch    schedule 25.07.2017    source источник
comment
пожалуйста, отформатируйте справку по коду здесь, добавьте все соответствующие теги к вопросу (это лучше будет соответствовать тегу в поиске)   -  person Sergii    schedule 25.07.2017


Ответы (2)


Похоже, вы пытаетесь выполнить команды в базе данных администратора, в которой ваш пользователь не авторизован. Вы можете найти правильную базу данных, на которую авторизован ваш пользователь, в учетных данных (ключ mongodb.credentials.database), но в идеале вы подключаетесь, используя предоставленный URI (mongodb.credentials.uri), который автоматически подключит вас к правильной базе данных.

Вы можете взглянуть на пример Python в учебнике, на который вы ссылаетесь, чтобы узнать, как правильно получить доступ к этим учетным данным и использовать их.

person Sandro Mathys    schedule 26.07.2017

ответ от Sandro Mathys правильный и полезный, я хочу немного уточнить/упростить.

брокер услуг предоставляет вам роль dbOwner и создаст для вас базу данных со случайным именем. Это делается во время cf create-service процесса.

Владелец базы данных может выполнять любые административные действия с базой данных. Эта роль объединяет привилегии, предоставляемые ролями readWrite, dbAdmin и userAdmin.

У вас нет прав доступа к базе данных admin. База данных admin предназначена только для операторов Swisscom. Пожалуйста, используйте для входа в оболочку mongo параметр --authenticationDatabase с случайное имя базы данных из cf env.

Указывает базу данных, в которой создается пользователь. См. База данных аутентификации.

Если вы не укажете значение для --authenticationDatabase, mongo использует базу данных, указанную в строке подключения.

person Josefine    schedule 27.07.2017
comment
Спасибо. теперь процедура работает. Я заметил, что, набрав «use admin», я переключал базу данных. Однако в начале он все еще не работал, но я сгенерировал новый ключ service_key, и теперь он работает хорошо. Спасибо еще раз - person Lggoch; 27.07.2017