「インストール - MongoDB」の版間の差分

提供: MochiuWiki : SUSE, EC, PCB

 
(同じ利用者による、間の1版が非表示)
52行目: 52行目:
===== MongoDBのインストール =====
===== MongoDBのインストール =====
リポジトリを追加した後、MongoDBをインストールする。<br>
リポジトリを追加した後、MongoDBをインストールする。<br>
  sudo dnf install -y mongodb-org
  sudo dnf install mongodb-org
<br>
<br>
インストールされるパッケージは以下の通りである。<br>
インストールされるパッケージは以下の通りである。<br>
64行目: 64行目:
*: データベース管理ツール
*: データベース管理ツール
<br>
<br>
===== サービスの起動と自動起動設定 =====
===== サービスの起動と自動起動設定 =====
MongoDBサービスを起動し、自動起動を有効にする。<br>
MongoDBサービスを起動し、自動起動を有効にする。<br>
369行目: 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


下表に、各オプションの説明を示す。

mongodコマンドのオプション
オプション 説明
--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


外部から接続する場合は、bindIp0.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