2

私はバージョン 2.4.4 を使用しており、http://docs.webfaction.com/software/mongodb.html の手順に従い、Ruby on Rails で Mongoid を使用しています。また、「userAdminAnyDatabase」権限で使用しているデータベースでユーザーを作成し、このレールモンゴイド構成で使用しています:

production:
  sessions:
    default:
      database: <table>
      hosts:
        - localhost:<port>
      username: <user>
      password: <password>

--auth フラグを指定してサーバーを実行しています。また、mongodb cpmmand 行を使用してユーザーを試してみましたが、動作しますが、Rails アプリをデプロイしても、次のようになります。

エラー 16550 で失敗しました: "クエリに対する権限がありません

足りないものはありますか?おそらく私が作成する必要がある特別なユーザーですか?

4

1 に答える 1

3

userAdminAnyDatabase ロールは、あなたが思うかもしれないことをまったく実行しません。これはMongoDBのドキュメントがそれについて言っていることです:

重要: userAdminAnyDatabase および userAdmin を持つユーザーは、独自のアクセス レベルに加えて権限を作成および変更できるため、このロールは事実上 MongoDB システム スーパーユーザーです。ただし、userAdminAnyDatabase と userAdmin は、ユーザー管理以外の権限をユーザーに明示的に許可しません。

作成したユーザーに userAdminAnyDatabase ロールを付与すると、実際にはデータベースの管理 (新しいユーザーの作成、ユーザーの削除、system.* コレクションへのアクセス) のみが許可されますが、データの読み取りまたは書き込みは実際には許可されません。

すべての管理者権限を持ち、どのデータベースでも読み書きできるスーパー ユーザーを作成する場合は、そのユーザーに readWriteAnyDatabase ロールも付与する必要があります。

db.addUser({user: 'username', pwd: 'password', roles: ['readWriteAnyDatabase', 'userAdminAnyDatabase']})
于 2013-08-19T18:22:48.093 に答える