用 Docker 跑 mongodb 筆記
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" } ] }
Leave a Reply