2016-10-25 8 views
0

私の質問は、mongoシェルの--authenticationDatabaseオプションに関するものです。MongoDB認証データベースの目的

私は、ユーザーが実際にここでは、このマニュアルを読んだ後に定義されているため、私は、ユーザーが作成したデータベースは、管理データベースだったと思っビットのためにそれで混乱していた:https://docs.mongodb.com/manual/core/security-users/#user-management-interface

私は私がいた理解違う;認証データベースは、ユーザーが役割を果たすデータベースです。私の質問は、オプション "--authenicationDatabase?"の目的は何ですか?以下の私のシナリオを見てください。

以下のコマンドは

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myapp 

をmyappのデータベースに接続し、また、myappのデータベースに対して認証されます以下のコマンドでは、myappのデータベースに接続しても、デフォルトではmyappのデータベースに対して認証します。これは、上記のコマンドを廃止するように思われる。

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myapp 

以下のコマンドは、myappデータベースに対して認証しますが、接続しません。どうして?単に資格情報をテストするだけですか?

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" 

このコマンドを実行すると、「エラー:認証に失敗しました」と表示されます。私の信任状が無効であることを知るために前のコマンドが必要なのはなぜだろうかと疑問に思う。

mongo -u "bob" -p "bobspassword" myapp 

最後に、1つのデータベースに対して認証し、次のコマンドのように別のデータベースに接続する必要がある状況がありますか?私は役割が定義されているデータベースにのみ接続できます。なぜ、接続しようとしていたデータベースに対して認証しないのですか?

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" myotherapp 

あなたの洞察をいただきありがとうございます!

答えて

0

mongoでは、実際にはデータベースに接続していません。後でデータベースを変更することができます。

あなたのコード:

mongo -u "bob" -p "bobspassword" --authenticationDatabase "myapp" 

サーバーをのmongodに接続し、他の人が

次のものが動作するはずが定義されていない場合はMongoから認証DBがかかるため、それは、「test」データベースを使用します接続文字列。また、設定ファイル内で異なる設定にすることもできます。

mongo -u "bob" -p "bobspassword" myapp 

と最終:

Lastly, is there a situation where I need to authenticate against one database and connect to a different one..

+0

なぜ私が唯一のサーバー/テストに接続するようにしたいですか? 'show dbs'を実行するには?他に何か? – Daniel

+0

おそらくデータベースを作成しますか?私はそれが理にかなっていると思う。 – Daniel

+0

これはデフォルト動作ですが、dbテストに接続するには、どこかに書き込む必要があります。 mongoでは、最初の文書が保存される瞬間にDBが作成されます。 – sergiuz

関連する問題