web-dev-qa-db-ja.com

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 }

何が起こっているのでしょうか?

これまでのところ、ユーザーに見つけることができるすべての役割を追加しようとしましたが、それは助けにはなりませんでした。

22
Guy

問題のユーザーに read ロールを割り当てる必要があります。

dbAdmin ロールはnot読み取りアクセスを含むnon-システムコレクション

22
Sebastian

Mongo 3.0.6に対してこの問題に遭遇した人のために、以下を追加して修正しました

?authMode=scram-sha1

私のmongodb uriの終わりに。

scram-sha1 の目的を説明するいくつかのドキュメントがあります

20
ticofab

@Sebastianの答えに加えて、それは明示的に意味します:

役割の付与

Db.grantRolesToUser()メソッドを使用してロールを付与します。たとえば、次の操作により、reportsUserユーザーにアカウントデータベースの読み取りロールが付与されます。

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

このソリューションをオンラインで見つけるのに苦労したため、これを投稿しています。問題は恥ずかしいですが、エラーメッセージとシナリオにより、把握するのが多少困難になるため、誰かの苦痛を軽減したいと考えています。私のアプリケーションはデータベース接続を確立し、静的ページを開始して提供することができましたが、クエリを実行しようとするたびにこのエラーが発生しました。

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

このエラーは、ユーザーIDとパスワードの区切り文字が間違っていたために発生しました

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

ノードアプリケーションはMongoDBに正常に接続できましたが、URIの形式が正しくないため、ドライバーはデータベースコマンドを発行する前に認証をスキップしていました。

MLabのサポートに感謝します。

5
Dean

私の場合、?authSource=adminからuri。

したがって、uriは次のようになりました。

spring.data.mongodb.uri=mongodb://user:password@Host:port/database?authSource=admin
2
IKo

私は同じ問題を抱えていました。多くの試行錯誤の後、ユーザーに「読み取り」ロールを追加することで解決しましたが、データベースも示しています。

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

あいさつ

0
Jaffer Pech

私のようなエラーが発生していました

err {MongoError:XXXXでコマンドを実行する権限がありません{$ eval:function(){return db.tbl_user.find({

私にとっては、executeFunctionsが機能しました。役割を付与すると、ユーザーは次のようになります...

{"_id": "XXXXX"、 "user": "USERXXX"、 "db": "DBXXXX"、 "roles":[{"role": "executeFunctions"、 "db": "admin"}、{"ロール ":" dbOwner "、" db ":" fryendsapp "}]}

0
Chirag Purohit