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