MongoDB的安裝以及用戶的創(chuàng)建

Windows 安裝 MongoDB

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

1588408081(1).jpg

下載完成后,雙擊安裝:

1588408335(1).jpg
1588408622(1).jpg
1588408822(1).jpg

后面直接一直點 next ,最后點 install 安裝就好了。

命令行方式啟動 MongoDB

為了從命令提示符下啟動 MongoDB 服務(wù),你必須從 MongoDB 目錄的 bin 目錄中執(zhí)行 mongod.exe 文件。

C:\Program Files\MongoDB\Server\4.2\bin> mongod --dbpath d:\mongodb\data\db
1588409489(1).jpg

如果執(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ù)界面。

1588411822(1).jpg
1588411962(1).jpg

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

1588412255(1).jpg

說明是系統(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
1588411347(1).jpg

如上圖所示,即表示連接 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ù)庫 adminlocal、configtest,它們都是沒有任何安全驗證的,因此我們要創(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ù):

  1. 在 MongoDB Shell 中執(zhí)行 db.adminCommand({ shutdown: 1 }) 后關(guān)閉 MongoDB Shell 窗口;

  2. 如果是命令行方式啟動 MongoDB 服務(wù),請?zhí)砑?--auth 命令行選項。

    C:\Program Files\MongoDB\Server\4.2\bin> mongod --auth --dbpath d:\mongodb\data\db
    
  3. 如果是 Windows 服務(wù)方式啟動 MongoDB,請在配置文件 mongod.cfg 中設(shè)置:

    security: // 記得將前面的'#'去掉
     authorization: enabled
    

以用戶管理員身份連接并進行身份驗證

創(chuàng)建完用戶管理員后,我們就要使用剛剛設(shè)置的用戶和密碼去連接 MongoDB 了。

驗證身份的方式有兩種,一是在連接的時候就進行身份驗證,二是先連接然后使用 db.auth() 進行身份驗證。

  1. 連接時驗證身份:

    C:\Program Files\MongoDB\Server\4.2\bin> mongo --authenticationDatabase "admin" -u "myUserAdmin" -p
    
    1588416419(1).jpg

輸入正確的密碼即可通過驗證。

  1. 先連接后驗證身份:

    > 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)限。

其他常用命令

  1. 修改用戶密碼:

    > use test
    > db.changeUserPassword("myTester", "abcd1234")
    
  2. 撤銷用戶的角色:

    > use test
    > db.revokeRolesFromUser(
        "myTester",
        [{ role: "readWrite", db: "test" }]
      )
    
  3. 刪除指定用戶:

    > use test
    > db.dropUser("myTester")
    
  4. 查看用戶角色和權(quán)限:

    > use test
    > db.getUser("myTester")
    
  5. 修改用戶的角色:

    > 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 、dbAdminuserAdmin 的權(quán)限集合
集群管理角色 clusterAdminclusterManager 、clusterMonitor 、hostManager 提供對集群數(shù)據(jù)庫的管理和操作權(quán)限
備份和還原角色 backuprestore 提供備份和還原數(shù)據(jù)的權(quán)限
全數(shù)據(jù)庫角色 readAnyDatabase 、readWriteAnyDatabaseuserAdminAnyDatabase 、dbAdminAnyDatabase 僅在 admin 數(shù)據(jù)庫上可用,提供除 local 數(shù)據(jù)庫外所有數(shù)據(jù)庫的特權(quán)
超級用戶角色 root 提供向任何用戶分配任何數(shù)據(jù)庫的任何權(quán)限的能力,超級用戶權(quán)限
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容