MongoDB インストール · 3 min read · Sep 15, 2025

Ubuntu 24.04 に MongoDB をインストールしてセキュリティを強化する方法

MongoDB はオープンソースのクロスプラットフォームで分散型の NoSQL(非 SQL または非リレーショナル)データベースシステムです。従来の SQL データベースのようにデータをテーブルに格納するのではなく、MongoDB は柔軟なドキュメントを使用してさまざまなデータ形式を格納します。MongoDB はデータを格納するためにバイナリ JSON 形式である BSON を使用します。

MongoDB は、組み込みの高可用性、自動フェイルオーバー、データ冗長性を備えた分散型 NoSQL データベースであり、分散クラスター全体でシャーディングを介して水平スケーリングを提供します。マルチリージョンの地理的展開をサポートし、CRUD 操作(読み取りおよび書き込み)、データ集約パイプライン、テキスト検索、地理空間クエリをサポートするクエリ API を提供します。

このガイドでは、Ubuntu 24.04 サーバーに MongoDB をインストールする方法を示します。Ubuntu サーバーの準備、MongoDB リポジトリの追加、MongoDB サーバーのインストール、MongoDB の管理者の作成、MongoDB 認証の有効化を行います。最後に、’mongosh’ シェルを使用して MongoDB でユーザーとデータベースを作成する方法を学びます。

前提条件

始める前に、次のものを用意してください:

  • Ubuntu 24.04 サーバー
  • 管理者権限を持つ非ルートユーザー

システムの準備

Ubuntu システムに MongoDB をインストールする前に、システムを構成していることを確認してください。この場合、次のように Ubuntu サーバーを構成します:

  • systemd を介して透明な巨大ページを無効にする
  • デフォルトの MongoDB ‘mongod’ ユーザーの制限を増やす
  • /etc/systctl.conf ‘ ファイルを介して fs.file-max を設定し、swappiness を有効にする

透明な巨大ページ (THP) の無効化

システムで THP を無効にするには、起動時またはスタートアップ時に自動的に実行される新しい systemd サービスファイルを作成します。

新しいサービスファイル ‘/ etc/systemd/system/disable-thp.service ‘ を ‘nano’ エディタで作成します。

sudo nano /etc/systemd/system/disable-thp.service

サービスを介して THP を無効にするために、次の構成を挿入します。

[Unit]  
Description=透明な巨大ページ (THP) を無効にする  
  
[Service]  
Type=simple  
ExecStart=/bin/sh -c "echo 'never' > /sys/kernel/mm/transparent_hugepage/enabled && echo 'never' > /sys/kernel/mm/transparent_hugepage/defrag"  
  
[Install]  
WantedBy=multi-user.target

ファイルを保存してエディタを終了します。

次に、以下の ‘ systemctl ‘ コマンドを実行して systemd マネージャをリロードし、’ disable-thp ‘ サービスを開始および有効にします。これにより、システム起動時に THP が無効になります。

sudo systemctl daemon-reload  
sudo systemctl enable --now disable-thp.service

Ulimits の設定

THP を無効にした後、ユーザー ‘mongod’ のデフォルトの最大ファイルとプロセスを少なくとも ‘ 64000 ‘ に増やす必要があります。

次の ‘nano’ エディタコマンドで新しいファイル ‘ /etc/security/limits.d/mongodb.conf ‘ を作成します。

sudo nano /etc/security/limits.d/mongodb.conf

最大ファイルオープンとプロセスを ‘ 64000 ‘ に増やすために、次の構成を挿入します。

mongod soft nproc 64000  
mongod hard nproc 64000  
mongod soft nofile 64000  
mongod hard nofile 64000

ファイルを保存してエディタを終了します。

swappiness と fs.file-max の設定

最後に、MongoDB 用にデフォルトの ‘ fs.file-max ‘ を増やし、swappiness を有効にする必要があります。そのためには、’ /etc/sysctl.conf ‘ ファイルを編集します。

次の ‘nano’ エディタコマンドで ‘ /etc/sysctl.conf ‘ ファイルを開きます。

sudo nano /etc/sysctl.conf

fs.file-max を設定し、swappiness を有効にするために、次の構成を挿入します。

fs.file-max = 2097152  
vm.max_map_count = 262144  
vm.swappiness = 1

完了したら、ファイルを保存してエディタを終了します。

次に、以下の ‘ sysctl ‘ コマンドを実行して、再起動せずに変更を適用します。

sudo sysctl -p

setup system

APT パッケージマネージャを使用した MongoDB のインストール

Ubuntu システムを構成したので、MongoDB をインストールする準備が整いました。このセクションでは、公式の MongoDB リポジトリから最新の MongoDB 8.0 バージョンをインストールします。

まず、以下の ‘ apt ‘ コマンドを実行して Ubuntu パッケージインデックスを更新し、’ gnupg ‘ と ‘ curl ‘ パッケージをインストールします。インストールを確認するには ‘ Y ‘ を入力します。

sudo apt update && sudo apt install gnupg curl

install curl

次に、MongoDB の GPG キーとリポジトリを追加するために、次のコマンドを実行します。この例では、Ubuntu 24.04 サーバーに MongoDB 8 をインストールします。

curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | \  
sudo gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg \  
--dearmor
echo "deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

install mongodb

次に、以下の ‘ apt ‘ コマンドを実行してパッケージインデックスを更新し、’ mongodb-org ‘ パッケージをシステムにインストールします。インストールを続行するには ‘ Y ‘ を入力します。

sudo apt update && sudo apt install mongodb-org

install mongodb

インストールが完了したら、以下の ‘ systemctl ‘ コマンドを実行して systemd マネージャをリロードします。’ mongod ‘ サービスが Ubuntu システムに追加されます。

sudo systemctl daemon-reload

最後に、以下のコマンドを実行して MongoDB ‘ mongod ‘ サービスを開始、有効化、確認します。MongoDB がシステムで実行されていることがわかります。

sudo systemctl enable --now mongod  
sudo systemctl status mongod

check mongodb service

MongoDB サーバーのセキュリティ強化

MongoDB をインストールした後、次の手順で MongoDB サーバーのインストールをセキュリティ強化します:

  • mongosh ‘ シェルを使用して MongoDB の新しい管理ユーザーを作成する
  • /etc/mongod.conf ‘ ファイルを編集して MongoDB 認証を有効にする

MongoDB 管理ユーザーの作成

このセクションでは、’mongosh’ シェルを介して新しい MongoDB 管理者ユーザーを作成します。’mongosh’ シェルは MongoDB サーバーと対話するためのクライアントコマンドラインであり、MySQL/MariaDB の ‘mysql’ や PostgreSQL の ‘psql’ のようなものです。

管理ユーザーを作成するには、以下の ‘ mongosh ‘ シェルコマンドで MongoDB サーバーにログインします。

mongosh

次に、以下のクエリを実行して MongoDB テレメトリーを無効にします。

disableTelemetry()

login to mongodb

次に、データベース ‘ admin ‘ に移動し、以下のクエリを実行して MongoDB の新しい管理ユーザーを作成します。この例では、新しいユーザー ‘ myAdmin ‘ を作成し、プロンプトが表示されたら新しいパスワードを入力します。

use admin
db.createUser(  
{  
user: "myAdmin",  
pwd: passwordPrompt(),  
roles: [  
{ role: "userAdminAnyDatabase", db: "admin" },  
{ role: "readWriteAnyDatabase", db: "admin" }  
]  
}  
)

次に ‘ quit() ‘ と入力して MongoDB シェルを終了します。

create admin

MongoDB 認証の有効化

MongoDB 管理ユーザーを作成したので、’ /etc/mongod.conf ‘ ファイルを介して MongoDB 認証を有効にする準備が整いました。

以下の ‘nano’ エディタコマンドでデフォルトの MongoDB サーバー構成 ‘ /etc/mongod.conf ‘ を開きます。

sudo nano /etc/mongod.conf

MongoDB での認証を有効にするために、次の行を追加します。

security:  
authorization: enabled

完了したら、ファイルを保存してエディタを終了します。

次に、以下の ‘ systemctl ‘ コマンドを実行して MongoDB サーバーを再起動し、変更を適用します。これにより、MongoDB 認証が有効になります。

sudo systemctl restart mongod

MongoDB 認証のテスト

MongoDB サーバーのインストールをセキュリティ強化したので、’mongosh’ シェルと新しい管理ユーザーおよびパスワードで MongoDB にログインして構成を確認しましょう。

以下の ‘ mongosh ‘ コマンドでユーザー ‘ myAdmin ‘ として MongoDB サーバーにログインします。プロンプトが表示されたらパスワードを入力します。

mongosh --port 27017 --authenticationDatabase \  
"admin" -u "myAdmin" -p

login to mongodb

ログインしたら、以下のクエリを実行して接続状態を確認します。’ myAdmin ‘ ユーザーで MongoDB サーバーにログインしているはずです。

db.runCommand({connectionStatus : 1})

次に ‘ quit() ‘ と入力して MongoDB サーバーを終了します。

check connection

MongoDB でのデータベースとユーザーの作成

このセクションでは、’mongosh’ シェルを使用して MongoDB で新しいデータベースとユーザーを作成する方法を学びます。したがって、管理者ユーザーとして MongoDB にログインしていることを確認してください。

まず、以下のクエリを実行してデータベース ‘ mydb ‘ に移動します。

use mydb

次に、以下のクエリを実行して新しいユーザー ‘ myUser ‘ を作成し、データベース ‘ mydb ‘ への読み取りおよび書き込みアクセスを許可します。プロンプトが表示されたらパスワードを入力します。

db.createUser(  
{  
user: "myUser",  
pwd: passwordPrompt(), // または平文のパスワード  
roles: [ { role: "readWrite", db: "mydb" },  
{ role: "read", db: "reporting" } ]  
}  
)

quit() ‘ と入力して MongoDB サーバーを終了します。

create database and user

次に、以下の ‘mongosh’ コマンドを実行して ‘ myUser ‘ としてデータベース ‘ mydb ‘ にログインします。プロンプトが表示されたらパスワードを入力します。

mongosh --port 27017 --authenticationDatabase \  
"mydb" -u "myUser" -p

login as new user

ログインしたら、以下のクエリを使用して接続状態を確認します。

db.runCommand({connectionStatus : 1})

以下のように、ユーザー ‘myUser’ として MongoDB サーバーに接続されており、データベース ‘ mydb ‘ への権限があることがわかります。

check connection

結論

おめでとうございます! Ubuntu 24.04 サーバーに MongoDB サーバーのインストールが完了しました。また、管理者ユーザーを作成し、MongoDB のインストールをセキュリティ強化しました。次に、’mongosh’ を使用して MongoDB サーバーに接続し、MongoDB でのユーザーとデータベースの管理に関する基本的なクエリを学びました。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。