「インストール - MongoDB」の版間の差分
| 370行目: | 370行目: | ||
== トラブルシューティング == | == トラブルシューティング == | ||
==== Data directory not foundエラー ==== | |||
<code>--dbpath</code> オプションで指定したディレクトリが存在しない、または、権限が無い。<br> | |||
該当するディレクトリを作成して、適切な所有者を設定する必要がある。<br> | |||
<br> | |||
==== Address already in useエラー ==== | |||
既にmongodプロセスが起動している、または、他のアプリケーションが27017番ポートを使用している。<br> | |||
<code>ss -tlnp | grep 27017</code> コマンドを実行して確認する。<br> | |||
<br> | |||
==== Permission deniedエラー ==== | |||
データディレクトリやログファイルの所有者・権限を確認して、mongodを実行するユーザがアクセスできるように設定する。<br> | |||
<br> | |||
==== サービスが起動しない場合 ==== | ==== サービスが起動しない場合 ==== | ||
サービスのステータスを確認する。<br> | サービスのステータスを確認する。<br> | ||
2026年2月8日 (日) 05:25時点における最新版
概要
MongoDBは、JSONライクなドキュメント形式でデータを管理するNoSQLデータベースである。
従来のリレーショナルデータベース (RDBMS) とは異なり、固定されたテーブルスキーマを必要とせず、柔軟なデータ構造でデータを格納できる。
MongoDBの主な特徴を以下に示す。
- ドキュメント指向
- データをBSON (Binary JSON) 形式で格納し、階層構造や配列を自然に表現できる。
- スキーマレス
- 事前にスキーマを定義する必要がなく、アプリケーションの要件に応じて柔軟にデータ構造を変更できる。
- 高いスケーラビリティ
- シャーディング (水平分割) とレプリケーションにより、大規模なデータセットと高トラフィックに対応できる。
- 豊富なクエリ機能
- アドホッククエリ、インデックス、集計パイプラインなど、強力なクエリ機能を提供する。
MongoDBは、Webアプリケーション、モバイルアプリケーション、IoT、リアルタイム分析、コンテンツ管理システムなど、幅広い用途で利用されている。
MongoDB Compassは、MongoDBの公式GUIクライアントである。
データベースの内容を視覚的に確認したり、クエリを対話的に作成したり、パフォーマンスを分析したりすることができる。
MongoDB Shell (mongosh) は、MongoDBの公式コマンドラインインターフェースである。
JavaScript構文を使用してMongoDBを操作でき、スクリプトによる自動化にも対応している。
システム要件
- CPU
- x86_64アーキテクチャ
- メモリ
- 最低1[GB] RAM (2[GB]以上推奨)
- ストレージ
- 最低1[GB]以上の空き容量 (データ保存用に別途必要)
MongoDB Community Serverのインストール
RHEL
GPGキーのインポート
まず、MongoDBパッケージの署名検証用GPGキーをインポートする。
sudo rpm --import https://www.mongodb.org/static/pgp/server-8.0.asc
リポジトリファイルの作成
MongoDBの公式リポジトリを追加するため、リポジトリファイルを作成する。
sudo vi /etc/yum.repos.d/mongodb-org-8.0.repo
[mongodb-org-8.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/9/mongodb-org/8.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-8.0.asc
MongoDBのインストール
リポジトリを追加した後、MongoDBをインストールする。
sudo dnf install mongodb-org
インストールされるパッケージは以下の通りである。
- mongodb-org-server
- MongoDBサーバ本体
- mongodb-org-mongos
- MongoDBシャーディング用ルータ
- mongodb-org-shell
- MongoDB Shell (mongosh)
- mongodb-org-database-tools-extra
- データベース管理ツール
サービスの起動と自動起動設定
MongoDBサービスを起動し、自動起動を有効にする。
sudo systemctl start mongod sudo systemctl enable mongod
サービスの状態を確認する。
sudo systemctl status mongod
インストールの確認
MongoDBが正常にインストールされたか確認する。
mongod --version
SUSE
GPGキーのインポート
まず、MongoDBパッケージの署名検証用GPGキーをインポートする。
sudo rpm --import https://www.mongodb.org/static/pgp/server-8.0.asc
リポジトリの追加
MongoDBの公式リポジトリを追加する。
# MongoDB 8.2 sudo zypper addrepo --gpgcheck "https://repo.mongodb.org/zypper/suse/15/mongodb-org/8.2/x86_64/" mongodb # MongoDB 8.0 sudo zypper addrepo --gpgcheck "https://repo.mongodb.org/zypper/suse/15/mongodb-org/8.0/x86_64/" mongodb
リポジトリのメタデータを更新する。
sudo zypper refresh
MongoDBのインストール
MongoDBをインストールする。
sudo zypper install mongodb-org
インストールされるパッケージは以下の通りである。
- mongodb-org-server
- MongoDBサーバ本体
- mongodb-org-mongos
- MongoDBシャーディング用ルータ
- mongodb-org-shell
- MongoDB Shell (mongosh)
- mongodb-org-database-tools-extra
- データベース管理ツール
サービスの起動と自動起動設定
MongoDBサービスを起動し、自動起動を有効にする。
sudo systemctl start mongod sudo systemctl enable mongod
サービスの状態を確認する。
sudo systemctl status mongod
インストールの確認
MongoDBが正常にインストールされたかどうかを確認する。
mongod --version
MongoDB Shell (mongosh)
MongoDB Shellは、MongoDBとやり取りするためのコマンドラインインターフェースである。
mongodb-orgパッケージに含まれているため、MongoDB Community Serverをインストールした時点で使用可能である。
個別インストール
MongoDB Shellのみを個別にインストールすることも可能である。
MongoDB Shellの公式ダウンロードページにアクセスして、環境に応じたパッケージをダウンロードする。
# RHEL sudo dnf install mongodb-mongosh-<バージョン>.x86_64.rpm # SUSE sudo zypper install mongodb-mongosh-<バージョン>.x86_64.rpm
基本的な使用方法
MongoDBに接続する。
mongosh
認証付きで接続する場合は、以下に示すコマンドを実行する。
mongosh "mongodb://<ユーザ名>:<パスワード>@localhost:27017/admin"
MongoDB Compassのインストール
概要
MongoDB Compassは、MongoDBの公式GUIツールである。
データの視覚化、クエリの実行、インデックスの管理等をグラフィカルな環境で行うことができる。
MongoDB Compassを使用するには、GUI環境 (GNOME、KDE等) が必要である。
システム要件:
- 最低2[GB] RAM (4[GB]以上推奨)
- 300[MB]以上のディスク空き容量
- GUI環境 (GNOME、KDE、Xfce等)
RHEL
ダウンロードとインストール
MongoDB Compassの公式ダウンロードページにアクセスして、RHEL向けのRPMパッケージをダウンロードする。
または、以下に示すコマンドでダウンロードする。
wget https://downloads.mongodb.com/compass/mongodb-compass-<バージョン>.x86_64.rpm
ダウンロードしたRPMパッケージをインストールする。
sudo dnf install mongodb-compass-<バージョン>.x86_64.rpm
SUSE
ダウンロードとインストール
MongoDB Compassの公式ダウンロードページにアクセスして、SUSE向けのRPMパッケージをダウンロードする。
または、以下に示すコマンドでダウンロードする。
wget https://downloads.mongodb.com/compass/mongodb-compass-<バージョン>.x86_64.rpm
ダウンロードしたRPMパッケージをインストールする。
sudo zypper install mongodb-compass-1.49.1.x86_64.rpm
MongoDB Compassの起動
アプリケーションメニューから[MongoDB Compass]を選択するか、以下に示すコマンドで起動する。
mongodb-compass
初回起動時は、接続先の設定画面が表示される。
デフォルトの接続先は、mongodb://localhost:27017 である。
MongoDBの初期設定
設定ファイルの場所
MongoDBの設定ファイルは以下に示す場所にある。
/etc/mongod.conf
主要な設定項目を以下に示す。
- systemLog
- ログ出力設定
- ログファイルのパス、ログレベル等
- storage
- データストレージ設定
- データディレクトリ (デフォルト: /var/lib/mongo)
- ストレージエンジンの設定
- net
- ネットワーク設定
- ポート番号 (デフォルト: 27017)
- バインドIPアドレス (デフォルト: 127.0.0.1)
- security
- セキュリティ設定
- 認証の有効化設定
mongodコマンドの直接実行
systemdサービスを使用せずに、mongod コマンドを直接実行して、MongoDBを起動することもできる。
この方法は、カスタムディレクトリにMongoDBをインストールした場合やテスト環境で使用する場合に有用である。
./mongod --dbpath <任意のデータディレクトリのパス> \
--logpath <任意のログファイルのパス> \
--logappend \
--port 27017 \
--bind_ip 127.0.0.1
下表に、各オプションの説明を示す。
| オプション | 説明 | 例 |
|---|---|---|
--dbpath |
データベースファイルを格納するディレクトリを指定する。指定したディレクトリは事前に作成しておく必要がある。 | /home/<ユーザ名>/MongoDB/data |
--logpath |
ログファイルの出力先を指定する。指定したディレクトリは事前に作成しておく必要がある。 | /home/<ユーザ名>/MongoDB/log/mongod.log |
--logappend |
ログファイルに追記モードで出力する。 このオプションを指定しない場合、起動時にログファイルが上書きされる。 |
- |
--port |
MongoDBがリッスンするポート番号を指定する。 デフォルトのポート番号は、27017番である。 |
27017 |
--bind_ip |
MongoDBがバインドするIPアドレスを指定する。 127.0.0.1 を指定した場合、ローカルホストからのみ接続可能となる。 外部からの接続を許可する場合は、0.0.0.0 を指定する。 |
127.0.0.1 |
事前にデータディレクトリとログディレクトリを作成しておくこと。
mkdir -p /home/<ユーザ名>/MongoDB/data mkdir -p /home/<ユーザ名>/MongoDB/log
バックグラウンドで実行する場合は、--fork オプションを追加する。
./mongod --dbpath /home/<ユーザ名>/MongoDB/data \
--logpath /home/<ユーザ名>/MongoDB/log/mongod.log \
--logappend \
--port 27017 \
--bind_ip 127.0.0.1 \
--fork
認証の有効化
デフォルトでは、MongoDBは認証なしで接続できる状態になっている。
本番環境では、必ず認証を有効にすることを推奨する。
管理者ユーザの作成
まず、MongoDB Shellで接続する。
mongosh
adminデータベースを選択する。
use admin
管理者ユーザを作成する。
db.createUser({
user: "admin",
pwd: "password",
roles: ["root"]
})
MongoDB Shellから切断する。
exit
mongod.confの編集
設定ファイルを編集して、認証を有効にする。
sudo vi /etc/mongod.conf
以下に示すセクションを追加または編集する。
security:
authorization: enabled
設定を反映するため、MongoDBを再起動する。
sudo systemctl restart mongod
認証付きで接続できることを確認する。
mongosh -u admin -p password --authenticationDatabase admin
ファイアウォールの設定
外部からMongoDBに接続する場合は、ファイアウォールで27017番ポートを開放する必要がある。
sudo firewall-cmd --permanent --add-port=27017/tcp sudo firewall-cmd --reload # または sudo SuSEfirewall2 open EXT TCP 27017 sudo systemctl restart SuSEfirewall2
設定を確認する。
sudo firewall-cmd --list-ports
SELinuxの設定 : SELinuxを使用している場合
RHELでSELinuxを有効にしている場合、MongoDBがカスタムパスを使用する時にSELinuxの設定が必要になることがある。
カスタムデータディレクトリを使用する場合:
sudo semanage fcontext -a -t mongod_var_lib_t "/custom/path/mongodb(/.*)?" sudo restorecon -Rv /custom/path/mongodb
SELinuxのコンテキストを確認する。
ls -Z /custom/path/mongodb
MongoDBの基本操作
mongoshでの接続
ローカルホストに接続する。
mongosh
認証付きで接続する。
mongosh -u admin -p password --authenticationDatabase admin
リモートホストに接続する。
mongosh "mongodb://username:password@hostname:27017/database"
データベースの作成
データベースを作成する。
use mydatabase
現在のデータベースを確認する。
db
全てのデータベースを一覧表示する。
show dbs
コレクションの作成
コレクション (テーブルに相当) を作成する。
db.createCollection("mycollection")
全てのコレクションを一覧表示する。
show collections
ドキュメントの挿入と検索
- ドキュメント (レコードに相当) を挿入する。
db.mycollection.insertOne({ name: "test", value: 123, created_at: new Date() })
- 複数のドキュメントを1度に挿入する。
db.mycollection.insertMany([ {name: "test1", value: 100}, {name: "test2", value: 200}, {name: "test3", value: 300} ])
- ドキュメントを検索する。
db.mycollection.find()
- 条件を指定して検索する。
db.mycollection.find({name: "test"})
- ドキュメントを更新する。
db.mycollection.updateOne({name: "test"}, {$set: {value: 456}})
- ドキュメントを削除する。
db.mycollection.deleteOne({name: "test"})
トラブルシューティング
Data directory not foundエラー
--dbpath オプションで指定したディレクトリが存在しない、または、権限が無い。
該当するディレクトリを作成して、適切な所有者を設定する必要がある。
Address already in useエラー
既にmongodプロセスが起動している、または、他のアプリケーションが27017番ポートを使用している。
ss -tlnp | grep 27017 コマンドを実行して確認する。
Permission deniedエラー
データディレクトリやログファイルの所有者・権限を確認して、mongodを実行するユーザがアクセスできるように設定する。
サービスが起動しない場合
サービスのステータスを確認する。
sudo systemctl status mongod
ログファイルを確認する。
sudo tail -f /var/log/mongodb/mongod.log
データディレクトリの権限を確認する。
ls -ld /var/lib/mongo
所有者がmongodユーザになっていない場合は、以下のコマンドで修正する。
sudo chown -R mongod:mongod /var/lib/mongo sudo chown -R mongod:mongod /var/log/mongodb
接続できない場合
MongoDBが起動しているか確認する。
sudo systemctl status mongod
ポートがリッスンしているか確認する。
sudo ss -tlnp | grep 27017
設定ファイルのバインドIPを確認する。
sudo grep bindIp /etc/mongod.conf
外部から接続する場合は、bindIp を 0.0.0.0 に変更する必要がある。
net:
port: 27017
bindIp: 0.0.0.0
設定を変更した後は、MongoDBを再起動する。
sudo systemctl restart mongod
認証エラーの場合
ユーザが正しく作成されているか確認する。
mongosh use admin db.system.users.find()
認証データベースを正しく指定しているか確認する。
mongosh -u admin -p password --authenticationDatabase admin
設定ファイルで認証が有効になっているか確認する。
sudo grep authorization /etc/mongod.conf
アンインストール
RHEL
まず、MongoDBサービスを停止する。
sudo systemctl stop mongod sudo systemctl disable mongod
MongoDBパッケージをアンインストールする。
sudo dnf remove mongodb-org*
データディレクトリとログディレクトリを削除する。
sudo rm -rf /var/lib/mongo sudo rm -rf /var/log/mongodb
必要に応じて、リポジトリファイルを削除する。
sudo rm /etc/yum.repos.d/mongodb-org-8.0.repo
SUSE
まず、MongoDBサービスを停止する。
sudo systemctl stop mongod sudo systemctl disable mongod
MongoDBパッケージをアンインストールする。
sudo zypper remove mongodb-org*
データディレクトリとログディレクトリを削除する。
sudo rm -rf /var/lib/mongo sudo rm -rf /var/log/mongodb
必要に応じて、リポジトリを削除する。
sudo zypper removerepo mongodb