pull image

$ docker pull mongo

建立 Container

$ docker run -it -p 27017:27017 -p 10022:22 \
-e MONGO_INITDB_ROOT_USERNAME=root \
-e MONGO_INITDB_ROOT_PASSWORD=123 \
-e MONGODB_ADMIN_USER=root \
-e MONGODB_ADMIN_PASS=123 \
-e MONGODB_APPLICATION_USER=root \
-e MONGODB_APPLICATION_PASS=123 \
-e AUTH=yes \
-d --name mongodb mongo:latest

到這裡 Mongodb 已經跑起來,而超級管理員帳密如上面環境變數所設定為  root / 123 ,可用於登入。

新增可存取 DB 的 User 筆記

1.從終端機,以最高權限帳號登入

注意要加上參數 authenticationDatabase,如下範例

$ mongo --port 27017 -u "root" -p "123" --authenticationDatabase "admin"

3.2 新增 User

進入 mongo 的 Terminal 後,執行新增指令如下,請自行替換 your_user_name、your_password 以及 your_db_name 為你的實際名稱。

> db.createUser({
  user: "your_user_name",
  pwd: "your_password",
  roles: [ { role: "readWrite", db: "your_db_name" }],
  mechanisms:[ "SCRAM-SHA-1" ]
});

3.3 修改該 User 資料,派給這個 User 特定資料庫的權限

在 Mongodb 內,找到 System -> admin -> Collections -> System -> system.users 的 user 資料,找到剛剛新增的 User,也就是剛剛的 your_user_name,檢視其內容,是否符合下面的範例 (請自行替換 your_user_name、your_password 以及 your_db_name 為你的實際名稱)

{
  "_id" : "your_db_name.your_user_name",
  "user" : "your_user_name",
  "db" : "your_db_name",
   .. 以下 credentials 等其他部分不必改 .. 略 ...

},

"roles" : [
  {
    "role" : "readWrite",
    "db" : "your_db_name"
  }
]
}