這次一樣使用 Docker 在本機建立相關環境。
取得 mongodb 的 image。
> docker pull mongo
將該 image run 起來,指定 port 1235 (或其他你想要的 port 也可以),並命名為 ironman-dynamodb-demo。並在這個階段就先將帳號密碼設定在環境變數中。
因為是練習,所以使用比較簡單的作法,實際開發時請遵照正常的權限設定,可參考官方文件。
> docker run -p 1235:27017 --name ironman-mongodb-demo ^
-e MONGO_INITDB_ROOT_USERNAME=demoUser ^
-e MONGO_INITDB_ROOT_PASSWORD=demoPassword mongo
先連線進去,輸入剛剛設定的帳號密碼。這時預設的是 test
,接著使用 use admin
切換到 admin
中設定使用者帳號權限,看到從 test >
變為 admin
表示切換成功。
# mongosh --port 27017 -u "demoUser" -p
test> use admin
admin>
接著建立使用者帳號,並給予 userAdminAnyDatabase
和 readWriteAnyDatabase
權限角色。
因為是練習,所以直接開了一個很高的權限,一般來說不會這樣開。
admin> db.createUser(
{
user: "appUser",
pwd: "appPwd",
roles: [
{ role: "userAdminAnyDatabase", db: "admin" },
{ role: "readWriteAnyDatabase", db: "admin" }
]
}
)
畫面顯示 ok 表示成功。
{ ok: 1 }
接著關掉連線。
admin> exit
重新以剛剛建立的帳號連線,
# mongosh --port 27017 -u "appUser" -p
輸入剛剛設定的密碼 demoPassword,實際操作畫面上會呈現 *
字號,
Enter password: appPwd
就會成功連線。
在資料庫不存在時建立一筆資料,系統會自動幫你建立一個資料庫,Collection 也一樣,當Collection不存在就會幫你建立。使用 use demobd
切到不存在的 demodb
資料庫,然後在不存在的 testCollection
建立一筆資料。
test> use demodb
switched to db demodb
demodb> db.testCollection.insertOne( { x: 1 } )
得到成功的回應。
{
acknowledged: true,
insertedId: ObjectId("632c6f6bc8b0b05ea2400624")
}
或是透過 db.createCollection("名稱")
來建立 Collection,建立時有許多參數可以設定,更多資訊請見官方文件。
demodb> db.createCollection("NetTestCollection2")
得到成功回應。
{ ok: 1 }
可以使用 db.getCollectionNames()
查看已建立的 Collection 名稱,來確認剛剛的操作是否成功。
demodb> db.getCollectionNames()
[ 'NetTestCollection', 'testCollection' ]