MongoDBを認証で使用し始めました。ドキュメントによると、localhost例外を使用して、userAdminAnyDatabaseの単一ロールを持つ管理ユーザーを作成しました。それはすべてうまくいった。 「mongo」クライアントを実行し、adminデータベースに対してusingそのデータベースに番号が表示されます1認証が成功したことを示しています。ただし、実行しようとしたコマンドはすべて、「承認されていない」エラーになり、承認したばかりの管理データベース内のコレクションを表示しようとしても結果は変わりません。
誰がこれがなぜであり、どのように修正できるか教えてもらえますか?現在、これを修正できるまで認証なしで実行しています。
userAdminAnyDatabase
ロール(およびその拡張であるuserAdmin
ロール)は、データベースのユーザーを管理するためのsystem.users
コレクションの読み取りおよび書き込み権限をユーザーに付与するだけです。ユーザーがデータベースの実際のコレクションを読み書きすることはできません。そのためには、read
またはreadWrite
ロールを付与する必要があります。
MongoDBのユーザー特権ロール および データベースへのユーザーの追加 を参照してください。
次の手順を実行して、認証の問題を解決してください。
サンプルコマンド:
mongod --port 27017 --dbpath /data/db1
use educationDb;
db.createUser({ user : 'readonly', pwd: 'readonly', roles : ['read']})
db.xyz.insert({"name":"nix.education"})
mongod --auth --port 27017 --dbpath /data/db1
use educationDb;
db.auth('readonly','readonly')