sql >> データベース >  >> NoSQL >> MongoDB

MongoDBデータベースへの接続


    はじめに

    MongoDBサーバーを使用できるようになったら、最初に実行する必要のある最も一般的なアクションの1つは、実際のデータベースに接続することです。これには、クライアントが接続して認証できるようにデータベースが構成されていることを確認するための調整が必要です。

    つまり、サーバーの場所、接続パラメーター、および正しいクレデンシャルを提供して、MongoDBデータベースに接続する方法を理解する必要があります。このガイドでは、mongoを使用してクライアント側からデータベースに接続する方法に焦点を当てます。 MongoDBシェルクライアント。主にデータベースとのインタラクティブセッション用に設計されています。

    コンパニオンガイドでは、要件に一致するようにMongoDBの認証設定を構成する方法を見つけることができます。両方の当事者の観点から認証がどのように実装されているかを完全に把握するには、両方の部分を読むことを検討してください。



    mongoに関する基本情報 クライアント

    mongo clientは、MongoDBデータベースサーバーに接続、制御、および対話するためのコマンドラインJavaScriptクライアントです。多くの点で、MongoDBデータベースに接続して使用を開始する最も簡単な方法です。これは、MongoDBインストールに含まれており、すべての一般的なプラットフォームで利用できるためです。 mongo クライアントは、初期構成の実行や、データを探索したり、予備的な結果に基づいてクエリを反復したりするインタラクティブセッションに特に役立ちます。

    mongoに接続する方法 シェルは、MongoDBサーバーの構成と、アカウントへの認証に使用できるオプションによって異なります。次のセクションでは、いくつかの基本的な接続オプションについて説明します。わかりやすくするために、ローカル接続とリモート接続を区別します。

    • ローカル接続 :クライアントとMongoDBインスタンスが同じサーバー上にある接続
    • リモート接続 :クライアントが別のコンピューターで実行されているネットワークアクセス可能なMongoDBインスタンスに接続している場合

    同じコンピューターからデータベースに接続することから始めましょう。



    mongoを使用してローカルデータベースに接続する

    引数なしで、mongo コマンドはローカルのMongoDBインスタンスへの接続を試みます。

    これを行うために、ローカルループバックアドレス127.0.0.1:27017のポート27017に接続しようとします。 。これは、MongoDBサーバーがデフォルト構成でバインドするインターフェースの1つです(MongoDBはローカルソケットファイルを介してアクセスすることもできます)。

    次のように入力すると、デフォルト構成で実行されているローカルMongoDBサーバーに接続できます。

    mongo

    接続が成功すると、かなり長いメッセージのセットの後にMongoDBシェルプロンプトが表示される可能性があります。

     MongoDB shell version v4.4.6 connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb Implicit session: session { "id" : UUID("9cf2d126-d25f-4ed8-b159-ef3bba4fcc53") } MongoDB server version: 4.4.6 --- The server generated these startup warnings when booting:         2021-06-04T12:26:53.374+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem         2021-06-04T12:26:54.562+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted --- ---         Enable MongoDB's free cloud-based monitoring service, which will then receive and display         metrics about your deployment (disk utilization, CPU, operation statistics, etc).          The monitoring data will be available on a MongoDB website with a unique URL accessible to you         and anyone you share the URL with. MongoDB may use this information to make product         improvements and to suggest MongoDB products and deployment options to you.          To enable free monitoring, run the following command: db.enableFreeMonitoring()         To permanently disable this reminder, run the following command: db.disableFreeMonitoring() --- >

    出力には、mongoによって生成されたログが表示されます 接続の確立中にコマンドを実行した後、起動時にMongoDBサーバーによっていくつかの警告が生成されます。最後に、MongoDBモニタリングサービスについて、利用または無効化を選択できるという通知があります。

    MongoDBサーバーからの警告の1つは、アクセス制御が現在有効になっていないことを示しています。これが、資格情報やその他の認証の詳細を提供せずに接続できた理由です。

    持っているローカルMongoDBサーバーに接続している場合 アクセス制御が設定されている場合は、接続するための追加情報を提供する必要があります。関連する--usernameを使用して接続するには、少なくともユーザー名とパスワードを入力する必要があります および--password オプション:

    mongo --username <mongo_username> --password

    --passwordを配置する 最後にオプションがあり、パスワードをインラインで提供しない場合は、MongoDBで代わりにパスワードの入力を求められることを示します。これは、コマンド自体にパスワードを指定するよりも安全です。パスワードは、シェル履歴、プロセスリスト、およびその他のメカニズムを通じて表示または回復できる可能性があるためです。

    MongoDBサーバーは、データベースに接続する前にユーザーのパスワードの入力を求めます。

    MongoDB shell version v.4.4.6Enter password:

    認証に成功すると、データベースに接続され、通常どおりセッションを続行できるようになります。

    --usernameを使用する代わりに、接続文字列を渡すことによって、この情報を提供することもできます。 および--password オプション:

    mongo "mongodb://<mongo_username>:@127.0.0.1"

    ユーザーが<username>:のパスワードを持っていることを示したので 構文ですが、mongoは提供されていません シェルはパスワードの入力を求めます。

    または、通常のmongoに接続した後に認証することもできます db.authを使用したコマンド コマンド。

    まず、資格情報を提供せずにMongoDBデータベースに接続します:

    mongo

    通常どおりコマンドプロンプトが表示されますが、アクセス制御が有効になっている場合は、認証するまで多くのアクションを実行する権限がありません。たとえば、show dbs 使用可能なデータベースを照会するためのアクセス権がないため、コマンドは空になる可能性があります:

    show dbs

    認証するには、まず、ユーザーが定義されているデータベースを選択します。ほとんどの場合、それはadminになります。 データベース:

    use admin

    その後、db.auth()を使用します ユーザー名を入力してパスワードプロンプトをリクエストするには:

    db.auth({user: "<mongo_username>", passwordPrompt()})

    以前と同様に、ユーザーアカウントのパスワードの入力を求められます。

    Enter password:

    成功すると、サーバーは1を出力します :

    Enter password:1

    これで、次のように認証したユーザーに通常のアクセス権が与えられます。

    show dbs
    admin   0.000GBconfig  0.000GBlocal   0.000GB

    次のように入力すると、現在の接続に関連付けられている認証済みユーザーとロールのリストをいつでも表示できます。

    db.runCommand("connectionStatus")
    {        "authInfo" : {                "authenticatedUsers" : [                        {                                "user" : "root",                                "db" : "admin"                        }                ],                "authenticatedUserRoles" : [                        {                                "role" : "userAdminAnyDatabase",                                "db" : "admin"                        },                        {                                "role" : "readWriteAnyDatabase",                                "db" : "admin"                        }                ]        },        "ok" : 1}


    リモートデータベースへの接続

    リモートのMongoDBデータベースに接続する場合は、mongoを使用するときに追加の詳細を提供する必要があります シェル。

    具体的には、--hostを含める必要があります オプションと、場合によっては--port MongoDBサーバーがデフォルト以外のポートでリッスンしている場合もオプションです。ほとんどの場合、--userも指定する必要があります および--password リモートサーバーに対しても認証するためのオプション。

    したがって、リモートのMongoDBデータベースに接続するときのコマンドの基本構造は、次のようになります。

    mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password

    ローカルデータベースへの接続に関するセクションで説明したように、--passwordを配置します 最後にオプションがあり、パスワードをインラインで指定しない場合は、mongoが必要であることを示します。 代わりにパスワードの入力を求めるシェル。これは、コマンド自体にパスワードを指定するよりも安全です。パスワードは、シェル履歴、プロセスリスト、およびその他のメカニズムを通じて表示または回復できる可能性があるためです。

    MongoDBサーバーは、データベースに接続する前にユーザーのパスワードの入力を求めます。

    MongoDB shell version v.4.4.6Enter password:

    認証に成功すると、データベースに接続され、通常どおりセッションを続行できるようになります。

    --hostを使用する代わりに、接続文字列を渡すことによって、この情報を提供することもできます。 、--port--username および--password オプション:

    mongo "mongodb://<mongo_username>:@<mongo_server_address>:<mongo_server_port>"

    ユーザーが<username>:のパスワードを持っていることを示したので 構文ですが、mongoは提供されていません シェルはパスワードの入力を求めます。



    MongoDBサーバーの認証構成を調整する

    ユーザーがMongoDBインスタンスに対して認証する方法を規定するルールを変更する場合は、サーバーの構成を変更することで変更できます。この記事で、MongoDBの認証構成を変更する方法を見つけることができます。



    結論

    このガイドでは、クライアント側からのMongoDB認証について説明しました。 mongoの使用方法をデモンストレーションしました さまざまな方法を使用してローカルデータベースインスタンスとリモートデータベースインスタンスの両方に接続するためのシェル。

    データベースシステムの作業を開始するときは、さまざまなMongoDBインスタンスに接続する方法を知ることが重要です。特別な認証を必要としない開発用にローカルのMongoDBインスタンスを実行することもできますが、ステージングおよび本番環境のデータベースではほぼ確実に認証が必要になります。どちらの場合でも認証できると、さまざまな環境でうまく機能できるようになります。




    1. 集約フレームワークを使用したMongoDBでのグループ数

    2. MongoDBドキュメントからフィールドを削除する方法($ unset)

    3. mongoexport E QUERY SyntaxError:予期しない識別子

    4. Mongoのすべてのドキュメントの文字列を置き換える方法