コンテナ化: MongoDB

1 依存性

コンテナ化への道を歩み始めましょう。

2 コンテナ化された MongDB

ここに画像の説明を挿入

2.1 鏡像を見る

docker search mongodb

ここに画像の説明を挿入

2.2 インストール

  • フォアグラウンドのインストール
sudo docker run  \
--name mongodb \
-p 27017:27017  \
-v /home/xindaqi/mongodb/conf:/data/configdb \
-v /home/xindaqi/data/mongodb-data:/data/db \
-v /home/xindaqi/mongodb/logs:/data/log \
mongo --auth
  • デーモンのインストール
sudo docker run  \
--name mongodb \
-p 27017:27017  \
-v /home/xindaqi/mongodb/conf:/data/configdb \
-v /home/xindaqi/data/mongodb-data:/data/db \
-v /home/xindaqi/mongodb/logs:/data/log \
-d mongo --auth
  • Docker の再起動後に MongoDB を自動的に再起動する
sudo docker run  \
--name mongodb \
--restart always \
-p 27017:27017  \
-v /home/xindaqi/mongodb/conf:/data/configdb \
-v /home/xindaqi/data/mongodb-data:/data/db \
-v /home/xindaqi/mongodb/logs:/data/log \
-d mongo --auth

3 ユーザーの操作

3.1 ログイン

docker exec -it container_id mongosh admin

MongoDB バージョン: 6.0.6
Mongsh バージョン: 1.9.0
ここに画像の説明を挿入

3.2 ユーザーの作成

MongoDB にはデフォルトではユーザーが存在しないため、
ユーザーは手動で作成する必要があります。

db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "root", db: "admin" } ] });

ここに画像の説明を挿入

3.3 ユーザーの認証

db.auth("admin", "admin123456");

ここに画像の説明を挿入

クライアント4名

MongoDB
ポータル用 NoSQLBooster: https://www.mongobooster.com/downloads

4.1 手動で接続を作成する

ここに画像の説明を挿入

4.2 基本構成

ここに画像の説明を挿入

4.3 ユーザー名とパスワード

ここに画像の説明を挿入

ここに画像の説明を挿入

4.4 接続ステータス

ここに画像の説明を挿入

ここに画像の説明を挿入

5 カード

5.1 ユーザーの役割

シリアルナンバー 役割 説明
1 読む すべての非システム コレクション (データベース) の読み取りを提供します。
2 読み書き すべての非システム コレクション (データベース) の読み取りと書き込み、およびすべての役割に対するすべての読み取り権限を提供します。
3 データベース管理者 スキーマ関連のタスク、インデックス作成、統計の収集などの管理タスクを実行する機能を提供します。このロールは、ユーザーおよびロールの管理権限を付与しません。
4 データベース所有者 データベース上で管理操作を実行する機能を提供します。このロールは、readWrite、dbAdmin、および userAdmin ロールによって付与される権限を組み合わせたものです。
5 ユーザー管理者 現在のデータベース上でロールとユーザーを作成および変更する機能を提供します。userAdmin ロールを使用すると、ユーザーは自分自身を含む任意のユーザーに任意の権限を付与できるため、このロールはスーパーユーザーにデータベースへのアクセスを間接的に提供するか、管理データベースで動作する場合はクラスターへのアクセスを提供します。
6 クラスター管理者 最適なクラスター管理アクセスを提供します。このロールは、clusterManager、clusterMonitor、および hostManager ロールによって付与される権限を組み合わせたものです。さらに、このロールは、dropDatabase 操作も提供します。
7 readAnyDatabase 管理データベースでのみ使用され、すべてのデータベースへの読み取りアクセスが提供されます。
8 読み取り書き込み任意のデータベース 管理データベースでのみ使用され、すべてのデータベースに読み取りおよび書き込み権限を提供します
9 userAdminAnyDatabase 管理データベースでのみ使用され、userAdmin と同じユーザー管理操作へのアクセスを提供し、ユーザーが任意のユーザー (自分自身を含む) に任意の権限を付与できるようにするため、このロールは間接的にスーパーユーザー アクセスも提供します。
10 dbAdminAnyデータベース 管理データベースでのみ使用され、dbAdmin と同じデータベース管理操作へのアクセスを提供します。このロールは、クラスター全体で listDatabases 操作も提供します。
11 管理データベースでのみ使用され、スーパー権限が提供されます

5.2 データベースの表示

show dbs

ここに画像の説明を挿入

5.3 データベースの作成

フォーマット:

use database_name

データベースが存在しません: データベースを作成します
データベースが存在します: このデータベースに切り替えます

use tutorial

データベース作成後は自動的にデータベースに切り替わりますが、データベースにデータがない場合はデータベースを確認すると一覧に表示されません。
ここに画像の説明を挿入

5.4 データベースへのユーザーの追加

db.createUser({ user: 'tutorial', pwd: 'admin123456', roles: [ { role: "dbOwner", db: "tutorial" } ] });

ここに画像の説明を挿入

6 よくある質問

6.1 mongoでログインできない

ここに画像の説明を挿入

xindaqi@xindaqi:~/mongodb$ docker exec -it ece80fb0f658 mongo admin
OCI ランタイム exec が失敗しました: exec が失敗しました: コンテナ プロセスを開始できません: exec: “mongo”: 実行可能ファイルが $PATH に見つかりません: 不明

MongoDB5.0 以降は、mongosh を使用してログインします。
公式: https://github.com/docker-library/mongo/issues/558

docker exec -it ece80fb0f658 mongosh admin

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Xin_101/article/details/130902224
おすすめ