Dockerシリーズチュートリアル02-MongoDBデフォルト認証
2524 ワード
説明、私がここで使っているのはcomposeのバージョンの1.17.0フォーマットは3ですが、これはcomposeのバージョンとは関係なく、MONGOを追加するだけです.INITDB_ROOT_USERNAMEとMONGO_INITDB_ROOT_PASWORDはあなたの環境変数に入ればいいです.
#公式mongo:3.2のimageを使用して、composeファイルは以下の通りです.環境変数MONGOに追加するとINITDB_ROOT_USERNAMEとMONGO_INITDB_ROOT_PASWORD(1つ欠けてはいけない)後mongodbは自動的に権限検証を開き、mongo公式ミラーファイルのdocker-entrypoint.shスクリプトに表示されます.https://github.com/docker-library/mongo/blob/00a8519463e776e797c227681a595986d8f9dbe1/3.0/docker-entrypoint.sh
#サービスを作成します.ここではswarmクラスタを使用しています.
docker stack deploy gionee -c=./docker-compose.yml
#容器内部に入り、mongo容器idを自分で表示する
docker exec -it 7c10b03dcf3a/bin/bash
#mongoコマンドの実行
mongo
#まずコマンドshow dbsを使用して、認証をオンにするかどうかを確認します.
2017-11-29T07:46:27.950+0000 E QUERY [thread1] Error: listDatabases failed:{
"ok": 0,
"errmsg": "not authorized on admin to execute command { listDatabases: 1.0 }",
"code": 13
}
説明はすでに鑑権を開いて、下へ歩き続けた.エラーメッセージが表示されていない場合は、mongoにデフォルトの認証権がないことを示します.compose.ymlのMONGOを確認する必要があります.INITDB_ROOT_USERNAMEとMONGO_INITDB_ROOT_PASWORDのフォーマットが正しいかどうか、ymlの文法はとても厳しいです
#デフォルトではtestデータベースにアクセスし、adminデータベースに切り替える必要があります
use admin
#adminユーザーの追加
#adminユーザーへのログイン
db.auth("admin","123456")
ユーザーを追加したいデータベースに入り、操作したいデータベースを切り替えることを忘れないでください.smartdbです.
use smartdb
#ユーザーの追加、権限の指定、およびデータベースreadWriteの読み書き権限の指定
#ユーザーが使用可能かどうかを確認します.1を返すと成功します.
db.auth("smart","123456")
#公式mongo:3.2のimageを使用して、composeファイルは以下の通りです.環境変数MONGOに追加するとINITDB_ROOT_USERNAMEとMONGO_INITDB_ROOT_PASWORD(1つ欠けてはいけない)後mongodbは自動的に権限検証を開き、mongo公式ミラーファイルのdocker-entrypoint.shスクリプトに表示されます.https://github.com/docker-library/mongo/blob/00a8519463e776e797c227681a595986d8f9dbe1/3.0/docker-entrypoint.sh
version: '3'
services:
mongo:
image: mongo:3.2
ports:
- "27017:27017"
volumes:
- mongo-data:/data/db
networks:
- backend
environment:
MONGO_INITDB_ROOT_USERNAME: root
MONGO_INITDB_ROOT_PASSWORD: root.123
volumes:
mongo-data:
networks:
backend:
#サービスを作成します.ここではswarmクラスタを使用しています.
docker stack deploy gionee -c=./docker-compose.yml
#容器内部に入り、mongo容器idを自分で表示する
docker exec -it 7c10b03dcf3a/bin/bash
#mongoコマンドの実行
mongo
#まずコマンドshow dbsを使用して、認証をオンにするかどうかを確認します.
2017-11-29T07:46:27.950+0000 E QUERY [thread1] Error: listDatabases failed:{
"ok": 0,
"errmsg": "not authorized on admin to execute command { listDatabases: 1.0 }",
"code": 13
}
説明はすでに鑑権を開いて、下へ歩き続けた.エラーメッセージが表示されていない場合は、mongoにデフォルトの認証権がないことを示します.compose.ymlのMONGOを確認する必要があります.INITDB_ROOT_USERNAMEとMONGO_INITDB_ROOT_PASWORDのフォーマットが正しいかどうか、ymlの文法はとても厳しいです
#デフォルトではtestデータベースにアクセスし、adminデータベースに切り替える必要があります
use admin
#adminユーザーの追加
db.createUser( {
user: "admin",
pwd: "123456",
roles: [ {
"role" : "userAdminAnyDatabase",
"db" : "admin"
},
{
"role" : "readWriteAnyDatabase",
"db" : "admin"
},
{
"role" : "dbAdminAnyDatabase",
"db" : "admin"
} ]
});
#adminユーザーへのログイン
db.auth("admin","123456")
ユーザーを追加したいデータベースに入り、操作したいデータベースを切り替えることを忘れないでください.smartdbです.
use smartdb
#ユーザーの追加、権限の指定、およびデータベースreadWriteの読み書き権限の指定
db.createUser(
{
user: "smart",
pwd: "123456",
roles: [
{ role: "readWrite", db: "smartdb" }
]
}
)
#ユーザーが使用可能かどうかを確認します.1を返すと成功します.
db.auth("smart","123456")