12

Mongo newb はこちら。4 つのデータベースを持つ mongo インストールがあり、すべてのデータベースに対して読み書きできるユーザーを作成したいと考えています。私は試した:

use admin;
db.addUser({user: "foo" , pwd: "bar", roles: [  "readWriteAnyDatabase" ]})

しかし、私がやろうとすると

mongo someotherdb -u foo -p

正しいパスワードで認証すると、認証エラーが発生します。

また、これを実行して、ユーザーを他のデータベースに手動で追加しようとしました

use someotherdb
db.addUser({user: "foo", roles: ['readWrite'], userSource: "admin"});

それでも、mongoシェルを介してログインしようとしたり、ターゲットデータベースでauthコマンドを使用したりするサイコロはありません。

私は何か間違ったことをしていますか?任意のデータベースに対してグローバルに読み書きできるユーザーを作成するにはどうすればよいですか? 上記のユーザーを各dbのsystem.usersコレクションに追加する必要がありますか、それとも「readWriteAnyDatabase」ロールを持っている場合は必要ありませんか?

ubuntuでmongo 2.4を使用しています。

4

1 に答える 1

21

だから、私はついにこれを理解しました。この修正は Mongo 2.4 でのみ機能することに注意してください。

2.4 では、接続文字列またはコマンド ラインで自分自身を認証するデータベースを指定できます。

したがって、初期ユーザーを作成するには

use admin
db.createUser({user: "foo" , pwd: "bar", roles: [  "userAdminAnyDatabase","readWriteAnyDatabase" ]})

および使用を認証する

mongo -u foo --authenticationDatabase admin -p

これで、任意の DB に対してやりたいことを何でもできるはずです

于 2013-11-21T09:09:49.190 に答える