はじめに
MongoDB サーバーが利用可能になったら、最初に行うべき最も一般的な操作の1つは、実際のデータベースに接続することです。これには、クライアントが接続および認証できるようにデータベースが構成されていることを確認するための調整が必要です。
つまり、サーバーの場所、接続パラメーター、正しい認証情報を提供して MongoDB データベースに接続する方法を理解する必要があります。このガイドでは、主にデータベースとの対話型セッション用に設計された mongo
MongoDB シェルクライアントを使用して、クライアント側からデータベースに接続する方法に焦点を当てます。
別の関連ガイドでは、要件に合わせて MongoDB の認証設定を構成する方法を確認できます。認証が両者の視点からどのように実装されているかの全体像を把握するために、両方の記事を読むことを検討してください。
MongoDB を使用している場合は、Prisma の MongoDB コネクターをチェックしてください!Prisma Client を使用すると、本番環境の MongoDB データベースを自信を持って管理できます。
MongoDB と Prisma の使用を開始するには、当社のゼロからの開始ガイドまたは既存プロジェクトへの追加方法をチェックしてください。
mongo
クライアントに関する基本情報
mongo
クライアントは、MongoDB データベースサーバーに接続し、制御し、操作するためのコマンドライン JavaScript クライアントです。MongoDB のインストールに含まれており、すべての人気のあるプラットフォームで利用できるため、MongoDB データベースに接続して使い始める最も簡単な方法の1つです。特に、初期設定や、データを探索したり、予備的な結果に基づいてクエリを反復したりするインタラクティブなセッションに役立ちます。
mongo
シェルでの接続方法は、MongoDB サーバーの構成と、アカウントへの認証に利用できるオプションによって異なります。以下のセクションでは、基本的な接続オプションのいくつかについて説明します。明確にするために、ローカル接続とリモート接続を区別します。
- ローカル接続: クライアントと MongoDB インスタンスが同じサーバー上にある接続
- リモート接続: クライアントが別のコンピューターで実行されているネットワークアクセス可能な MongoDB インスタンスに接続している接続
同じコンピューターからデータベースに接続することから始めましょう。
mongo
を使用してローカルデータベースに接続する
引数なしで mongo
コマンドを実行すると、ローカルの MongoDB インスタンスに接続しようとします。
これを行うには、ローカルループバックアドレスのポート 27017、つまり 127.0.0.1:27017
に接続しようとします。これは、MongoDB サーバーがデフォルト設定でバインドするインターフェースの1つです(MongoDB はローカルソケットファイル経由でもアクセスできる場合があります)。
デフォルト設定で実行されているローカル MongoDB サーバーには、次のように入力して接続できます。
mongo
接続が成功すると、かなり長い一連のメッセージの後に MongoDB シェルプロンプトが表示されるでしょう。
MongoDB shell version v4.4.6connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodbImplicit 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-filesystem2021-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 displaymetrics 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 youand anyone you share the URL with. MongoDB may use this information to make productimprovements 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 と Prisma の使用を開始するには、当社のゼロからの開始ガイドまたは既存プロジェクトへの追加方法をチェックしてください。
リモートデータベースに接続する
リモートの MongoDB データベースに接続する場合は、mongo
シェルを使用する際にいくつかの追加の詳細情報を提供する必要があります。
具体的には、--host
オプションを含める必要があります。MongoDB サーバーがデフォルト以外のポートでリッスンしている場合は、--port
オプションも必要になる可能性があります。ほとんどの場合、リモートサーバーに認証するために --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 インスタンスを実行するかもしれませんが、ステージング環境と本番環境のデータベースはほぼ確実に認証を必要とします。どちらの場合でも認証できることは、さまざまな環境でうまく作業できることにつながります。
MongoDB を使用している場合は、Prisma の MongoDB コネクターをチェックしてください!Prisma Client を使用すると、本番環境の MongoDB データベースを自信を持って管理できます。
MongoDB と Prisma の使用を開始するには、当社のゼロからの開始ガイドまたは既存プロジェクトへの追加方法をチェックしてください。
よくある質問
リモート MongoDB データベースに接続するには、mongo
シェルを使用する際に、--host
や場合によっては --port
のような追加の詳細を含める必要があります。
コマンドの基本的な構造は次のようになります。
mongo --host <mongo_server_address> --port <mongo_server_port> --user <mongo_username> --password
MongoDB データベースも、設定ファイルまたは Atlas IP ホワイトリストのいずれかでリモート接続を受け入れるように構成されている必要があります。
管理者ユーザーがこれらの手順を使用してすでに作成されていると仮定すると、次の構文に似たものを使用できます。
use admindb.auth('admin','password');
mongo
クライアントは、MongoDB データベースサーバーに接続し、制御し、操作するためのコマンドライン JavaScript クライアントです。
mongo
シェルの接続と使用方法は構成によって異なりますが、一般的にはシェルに mongo
と入力することでコマンドラインを使い始めることができます。
必要に応じて、MongoDB にはコマンドラインから --help
アドオンもあります。
はい、Java で MongoDB に接続できます。この手順の最初のステップでは、Java ドライバーをインストールする必要があります。