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 }
何が起こっているのでしょうか?
これまでのところ、ユーザーに見つけることができるすべての役割を追加しようとしましたが、それは助けにはなりませんでした。
Mongo 3.0.6に対してこの問題に遭遇した人のために、以下を追加して修正しました
?authMode=scram-sha1
私のmongodb uriの終わりに。
scram-sha1 の目的を説明するいくつかのドキュメントがあります
@Sebastianの答えに加えて、それは明示的に意味します:
役割の付与
Db.grantRolesToUser()メソッドを使用してロールを付与します。たとえば、次の操作により、reportsUserユーザーにアカウントデータベースの読み取りロールが付与されます。
db.grantRolesToUser(
"your_user",
[
{ role: "read", db: "your_db" }
]
)
このソリューションをオンラインで見つけるのに苦労したため、これを投稿しています。問題は恥ずかしいですが、エラーメッセージとシナリオにより、把握するのが多少困難になるため、誰かの苦痛を軽減したいと考えています。私のアプリケーションはデータベース接続を確立し、静的ページを開始して提供することができましたが、クエリを実行しようとするたびにこのエラーが発生しました。
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のサポートに感謝します。
私の場合、?authSource=admin
からuri。
したがって、uriは次のようになりました。
spring.data.mongodb.uri=mongodb://user:password@Host:port/database?authSource=admin
私は同じ問題を抱えていました。多くの試行錯誤の後、ユーザーに「読み取り」ロールを追加することで解決しましたが、データベースも示しています。
db.grantRolesToUser("myUserName",
[{ role: "read", db: "myDataBaseName"}] );
あいさつ
私のようなエラーが発生していました
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 "}]}