MongoBD がデータをクエリするときにエラーが発生します。
not authorized for query
最終的にユーザー権限の問題であることが判明しました
組み込みの役割:
- データベース ユーザー ロール: 読み取り、読み取り書き込み。
- データベース管理ロール: dbAdmin、dbOwner、userAdmin。
- クラスター管理ロール:clusterAdmin、clusterManager、clusterMonitor、hostManager。
- バックアップとリカバリの役割: バックアップ、復元。
- すべてのデータベース ロール: readAnyDatabase、readWriteAnyDatabase、userAdminAnyDatabase、dbAdminAnyDatabase
- スーパーユーザーの役割: root
現在のユーザーを確認する
use admin;
db.auth('root', '123456')
db.getUsers();
[
{
"_id" : "admin.root",
"userId" : UUID("d3703a16-3066-43de-8ed2-07aed8608281"),
"user" : "root",
"db" : "admin",
"roles" : [
{
"role" : "userAdminAnyDatabase",
"db" : "admin"
}
],
"mechanisms" : [
"SCRAM-SHA-1",
"SCRAM-SHA-256"
]
}
]
彼の許可は次のとおりであることがわかりました。"role" : "userAdminAnyDatabase"
userAdminAnyDatabase: ロールとユーザーを割り当てる権限はありますが、表示する権限はなく、バックアップには使用できません。
したがって、新しいユーザーを追加し、データのクエリと変更の権限を付与する必要があります。
db.createUser({
user:"admin",pwd:"123456",roles:[{
role:"root",db:"admin"}]})
または、元のアカウントの権限を増やします