Windows 安裝 MongoDB
首先前往 mongodb 官網(wǎng)下載安裝包:https://www.mongodb.com/download-center/community

下載完成后,雙擊安裝:



后面直接一直點 next ,最后點 install 安裝就好了。
命令行方式啟動 MongoDB
為了從命令提示符下啟動 MongoDB 服務(wù),你必須從 MongoDB 目錄的 bin 目錄中執(zhí)行 mongod.exe 文件。
C:\Program Files\MongoDB\Server\4.2\bin> mongod --dbpath d:\mongodb\data\db

如果執(zhí)行后沒有報錯且光標(biāo)在閃爍,那代表運行成功。
Windows 服務(wù)方式啟動 MongoDB
通過執(zhí)行 mongod.exe,使用 --install 選項來安裝服務(wù),使用 --config 選項來指定配置文件。
C:\Program Files\MongoDB\Server\4.2\bin> mongod.exe --config "C:\Program Files\MongoDB\Server\4.2\bin\mongod.cfg" --install
如果沒有任何報錯,代表安裝成功。
按 win+R 鍵打開運行窗口,輸入 services.msc 即可快速打開Windows服務(wù)界面。


點擊左上角 啟動 服務(wù),如果彈窗顯示如下:

說明是系統(tǒng)環(huán)境變量沒有設(shè)置好或前面安裝服務(wù)出現(xiàn)問題,請排查后再啟動。
如果左上角出現(xiàn) 停止 和 重啟動 說明服務(wù)啟動成功。
命令行啟動和 Windows 服務(wù)啟動任選一種方式即可,按自己的喜好來。
連接MongoDB
運行 MongoDB 服務(wù)的窗口不要關(guān),另外打開一個命令行窗口,執(zhí)行:
C:\Program Files\MongoDB\Server\4.2\bin> mongo

如上圖所示,即表示連接 MongoDB 成功。
當(dāng)你進入 MongoDB 后臺后,它默認會連接到 test 文檔(數(shù)據(jù)庫),你也可以執(zhí)行:
> db
test
來顯示當(dāng)前連接的數(shù)據(jù)庫。
執(zhí)行 mongo 命令相當(dāng)于打開了一個 MongoDB Shell,它是MongoDB自帶的交互式 Javascript shell,用來對 MongoDB 進行操作和管理的交互式環(huán)境。
如果是 Windows 服務(wù)方式運行的 MongoDB,直接運行 cmd 在窗口中執(zhí)行
mongo即可連接 MongoDB,無需進入安裝 MongoDB 的 bin 目錄中。
MongoDB啟用訪問控制
安裝的MongoDB有默認的4個數(shù)據(jù)庫 admin、local、config 和 test,它們都是沒有任何安全驗證的,因此我們要創(chuàng)建用戶角色和密碼來啟用訪問控制,確保數(shù)據(jù)安全。
創(chuàng)建用戶管理員
在 MongoDB Shell 中執(zhí)行:
> db.createUser({
user: "myUserAdmin", // 用戶名自定義
pwd: passwordPrompt(), // 或明文密碼*
roles: [{role: "userAdminAnyDatabase", db: "admin"}, "readWriteAnyDatabase"]
})
如果執(zhí)行后出現(xiàn) Successfully added user: 說明創(chuàng)建成功。
* pwd 為 passwordPrompt() 時,執(zhí)行后窗口會出現(xiàn)
Enter password:,鍵入的密碼是不可見的。
啟用訪問控制后要重啟 MongoDB 服務(wù):
在 MongoDB Shell 中執(zhí)行
db.adminCommand({ shutdown: 1 })后關(guān)閉 MongoDB Shell 窗口;-
如果是命令行方式啟動 MongoDB 服務(wù),請?zhí)砑?
--auth命令行選項。C:\Program Files\MongoDB\Server\4.2\bin> mongod --auth --dbpath d:\mongodb\data\db -
如果是 Windows 服務(wù)方式啟動 MongoDB,請在配置文件
mongod.cfg中設(shè)置:security: // 記得將前面的'#'去掉 authorization: enabled
以用戶管理員身份連接并進行身份驗證
創(chuàng)建完用戶管理員后,我們就要使用剛剛設(shè)置的用戶和密碼去連接 MongoDB 了。
驗證身份的方式有兩種,一是在連接的時候就進行身份驗證,二是先連接然后使用 db.auth() 進行身份驗證。
-
連接時驗證身份:
C:\Program Files\MongoDB\Server\4.2\bin> mongo --authenticationDatabase "admin" -u "myUserAdmin" -p1588416419(1).jpg
輸入正確的密碼即可通過驗證。
-
先連接后驗證身份:
> use admin // 先切換數(shù)據(jù)庫 > db.auth("myUserAdmin", passwordPrompt()) // 或明文密碼1588430385.jpg
出現(xiàn)提示輸入密碼即可驗證成功。
根據(jù)需要創(chuàng)建其他用戶
一旦創(chuàng)建用戶管理員,就可以用 db.createUser() 創(chuàng)建其他用戶。
比如在 test 數(shù)據(jù)庫中創(chuàng)建一個用戶 myTester,該用戶具有讀寫 test 數(shù)據(jù)庫的權(quán)限,同時他還有讀 produce 數(shù)據(jù)庫的權(quán)限。
> use test
> db.createUser({
user: "myTester",
pwd: passwordPrompt(), // 或明文密碼
roles: [
{ role: "readWrite", db: "test" },
{ role: "read", db: "produce" }
]
})
同樣的,如果執(zhí)行后出現(xiàn) Successfully added user: 說明創(chuàng)建成功。
注意:雖然在此例子中是針對
test數(shù)據(jù)庫進行創(chuàng)建用戶,但是該用戶可以在其他數(shù)據(jù)庫中扮演角色,即驗證該用戶身份的數(shù)據(jù)庫不限制用戶的權(quán)限。
其他常用命令
-
修改用戶密碼:
> use test > db.changeUserPassword("myTester", "abcd1234") -
撤銷用戶的角色:
> use test > db.revokeRolesFromUser( "myTester", [{ role: "readWrite", db: "test" }] ) -
刪除指定用戶:
> use test > db.dropUser("myTester") -
查看用戶角色和權(quán)限:
> use test > db.getUser("myTester") -
修改用戶的角色:
> use test > db.updateUser( "myTester", { pwd: passwordPrompt(), roles: [ { role: "readWrite", db: "test" }, { role: "userAdmin", db: "test" } ] } )
注意:以上命令執(zhí)行的前提是必須先切換到
admin數(shù)據(jù)庫進行身份驗證后才能執(zhí)行成功。
常用內(nèi)置角色
| 分類 | 角色 | 說明 |
|---|---|---|
| 數(shù)據(jù)庫用戶角色 |
read 、readWrite
|
提供讀或讀寫某個數(shù)據(jù)庫的權(quán)限 |
| 數(shù)據(jù)庫管理角色 |
dbAdmin 、dbOwner 、userAdmin
|
提供用戶在數(shù)據(jù)庫上創(chuàng)建或修改用戶的權(quán)限,提供管理執(zhí)行任務(wù)的權(quán)限。 其中 dbOwner 角色是 readWrite 、dbAdmin 和 userAdmin 的權(quán)限集合 |
| 集群管理角色 |
clusterAdmin 、clusterManager 、clusterMonitor 、hostManager
|
提供對集群數(shù)據(jù)庫的管理和操作權(quán)限 |
| 備份和還原角色 |
backup 、restore
|
提供備份和還原數(shù)據(jù)的權(quán)限 |
| 全數(shù)據(jù)庫角色 |
readAnyDatabase 、readWriteAnyDatabase 、userAdminAnyDatabase 、dbAdminAnyDatabase
|
僅在 admin 數(shù)據(jù)庫上可用,提供除 local 數(shù)據(jù)庫外所有數(shù)據(jù)庫的特權(quán) |
| 超級用戶角色 | root |
提供向任何用戶分配任何數(shù)據(jù)庫的任何權(quán)限的能力,超級用戶權(quán)限 |

