Подтвердить что ты не робот

MongoDB не авторизовано для запроса - код 13

В MongoDB 2.6.1 Я настроил пользователя с правами dbAdmin:

{
        "_id" : "mydbname.myusername",
        "user" : "myusername",
        "db" : "mydbname",
        "credentials" : {
                "MONGODB-CR" : "<some credentials>"
        },
        "roles" : [
                {
                        "role" : "dbAdmin",
                        "db" : "mydbname"
                }
        ]
}

Когда я использую оболочку mongo для подключения к базе данных (используя -u и -p в командной строке) и запускайте такой запрос:

db.mycollectionname.find()

Я получаю эту ошибку:

error: { "$err" : "not authorized for query on mydbname.request", "code" : 13 }

Любые идеи, что может произойти?

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

4b9b3361

Ответ 1

Вам необходимо назначить роль read соответствующему пользователю.

dbAdmin роль не включает доступ для чтения в несистемных коллекциях.

Ответ 2

Для любого, кто сталкивается с этой проблемой против Mongo 3.0.6, я исправил добавление

?authMode=scram-sha1

в конце моего монгодб-ури.

Вот некоторые документы, объясняющие цель scram-sha1

Ответ 3

В дополнение к ответу @Sebastian это означает явно:

Предоставить роль

Предоставить роль, используя метод db.grantRolesToUser(). Например, следующая операция предоставляет отчетам Пользователю пользователя роль чтения на база данных учетных записей:

db.grantRolesToUser(
    "your_user",
    [
      { role: "read", db: "your_db" }
    ]
)

Ответ 4

Я опубликовал это, потому что у меня возникли проблемы с поиском этого решения в Интернете. Проблема неловкая, но сообщение об ошибке и сценарий несколько затрудняют ее выяснение, поэтому я надеюсь немного сэкономить. Мое приложение смогло установить соединение с базой данных, запустить и обслуживать статические страницы, но каждый раз, когда он пытался выполнить запрос, я получил эту ошибку.

MongoError: not authorized on mydb to execute command { count: "urls", query: {} }

Эта ошибка была вызвана идентификатором пользователя и паролем с неправильным разделителем

mongodb://myuserid/[email protected]:12345/mydb [wrong]
mongodb://myuserid:[email protected]:12345/mydb [right]

В то время как приложение node смогло успешно подключиться к MongoDB, неправильно отформатированный URI заставил драйвер пропустить аутентификацию до выдачи команд базы данных.

Спасибо и наконечник шляпы людям при поддержке mLab.

Ответ 5

В моем случае помогло добавить ?authSource=admin к uri.

Итак, ури выглядело так:

spring.data.mongodb.uri=mongodb://user:[email protected]:port/database?authSource=admin

Ответ 6

Я получаю ошибку как

err {MongoError: не авторизован в XXXX для выполнения команды {$ eval: function() {return db.tbl_user.find({

For me role executeFunctions worked. У меня роль executeFunctions выполнялась. Once you give role your user should look like following... После того, как вы назначите роль, ваш пользователь должен выглядеть следующим образом...

{ "_id": "XXXXX", "user": "USERXXX", "db": "DBXXXX", "roles": [ { "role": "executeFunctions", "db": "admin" }, { "role": "dbOwner", "db": "fryendsapp" } ] } {"_id": "XXXXX", "user": "USERXXX", "db": "DBXXXX", "role": [{"role": "executeFunctions", "db": "admin"}, {" role ":" dbOwner "," db ":" fryendsapp "}]}

Ответ 7

У меня была та же проблема, после многих проб и ошибок я решил ее, добавив роль "чтение" для моего пользователя, но также указав базу данных:

db.grantRolesToUser("myUserName",
[{ role: "read", db: "myDataBaseName"}] );

Привет

Ответ 8

У меня была такая же проблема, пока я не понял, что допустил ошибку. Я наследовал клиента mongo, указывающего на другую базу данных из родительского класса Perl, не осознавая этого. Возможно, вы можете проверить.