首頁 > web前端 > js教程 > 主體

mongoDB中使用者與權限的介紹

不言
發布: 2018-07-27 11:03:51
原創
1699 人瀏覽過

這篇文章要跟大家介紹的文章內容是關於mongoDB中使用者與權限的介紹,有很好的參考價值,希望可以幫助到有需要的朋友。

前言

對於資料庫而言,使用者和權限是非常重要的一部分,因為這涉及到安全,那麼mongoDB的使用者和權限是怎麼樣的呢?

說明

環境說明

本文所用的mongoDB版本是3.6,作業系統是windows。

其他說明

限於篇幅,本文不會介紹資料庫從下載到安裝的過程,關於安裝教程,網路上有大量教程,你可以按照這些教程把它裝好跑起來。本文將重點放在mongoDB的使用者和權限這一部分。

服務端與客戶端

對於mongoDB,分為服務端與客戶端。
在windows環境的安裝目錄下,直接雙擊開啟mongod.exe,即可​​開啟mongoDB服務。
當服務開啟後,便可以雙擊mongo.exe開啟客戶端來連線到mongoDB服務。

開啟授權模式

mongoDB安裝後,如果直接用mongod.exe開啟服務,預設是沒有開啟授權模式的,如果你的mongoDB沒有開啟授權模式,那麼任何人都不需要使用者名稱和密碼也可以登入mongoDB服務端,對你的資料庫為所欲為,甚至直接刪庫跑路。所以,在產品環境中,請確保一定記得開啟授權模式。

那麼,要怎麼開啟授權模式呢?
開啟cmd,進入到安裝目錄的bin目錄下,執行以下指令:

mongod --auth --port 27017 --dbpath /data/db
登入後複製
登入後複製

開啟了授權模式後,開啟mongo.exe,在admin資料庫下,執行show dbs,這時,資料庫會報錯,提醒沒有授權。如下:

mongoDB中使用者與權限的介紹

用戶類型

mongoDB資料庫,大致分為兩類用戶,一種是管理員用戶,一種是普通用戶。

管理員

我們在admin資料庫中建立一個管理員使用者(userAdmin or userAdminAnyDatabase role),管理員使用者可以管理一般使用者。
首先,以非授權模式開啟mongoDB服務。

mongod --port 27017 --dbpath /data/db
登入後複製

然後進入admin資料庫,執行以下指令:

use admin
db.createUser(
  {
    user: "larry",
    pwd: "123456",
    roles: [ { role: "userAdminAnyDatabase", db: "admin" } ]
  }
)
登入後複製

當提示Successfully added user,證明這個管理員使用者已經加入成功。

一般使用者

當管理員使用者建立成功後,我們便可以用這個管理員使用者來給每個資料庫來建立一般使用者。
首先,關閉上面所有的mongo shell視窗。
再以授權模式開啟mongoDB服務。

mongod --auth --port 27017 --dbpath /data/db
登入後複製
登入後複製

開啟mongo.exe客戶端,進入admin資料庫,用db.auth()登入。

mongoDB中使用者與權限的介紹

第一個參數是上面建立的管理者使用者名稱larry,第二個參數是管理者使用者larry的密碼。
結果回傳1,表示管理員larry登入成功。
接下來,用這個管理員為photo_app資料庫建立一個普通使用者moddx,並指定其權限為readWrite。

use photo_app
db.createUser(
{
  user: "moddx",
  pwd: "123456",
  roles: [{ role: "readWrite", db: "photo_app"}]
}
)
登入後複製

查看使用者

全域所有帳號

首先,要以管理員帳號登入admin資料庫,接著執行下列指令:

db.system.users.find().pretty()
登入後複製

mongoDB中使用者與權限的介紹

目前庫下的帳戶

#查看全域所有帳戶,只有管理員才可以查看,而查看目前庫中的帳號,普通使用者和管理員使用者都可以查看,查看目前庫下的帳號指令如下:

show users
登入後複製

mongoDB中使用者與權限的介紹

#刪除使用者

必須擁有dropUser權利的管理員帳號才能刪除用戶,所以,需要用管理員帳號登入進行操作。
刪除普通用戶moddx的命令如下:

db.dropUser("moddx", {w: "majority", wtimeout: 5000})
登入後複製

撤銷權限

撤銷一個用戶的權限,命令如下:

db.revokeRolesFromUser(
    "moddx",
    [
      { role: "readWrite", db: "photo_app" }
    ]
)
登入後複製

注意:上面命令雖然撤銷了moddx使用者在photo_app資料庫中的讀寫權限,但是,使用者並沒有刪除,依舊可以登入。

授予權限

如下指令給了使用者moddx在photo_app中的讀寫權限,同時,給予了他在demodb資料庫中的讀取權限

use photo_app
db.grantRolesToUser(
   "moddx",
   [ "readWrite" , { role: "read", db: "demodb" } ],
   { w: "majority" , wtimeout: 4000 }
)
登入後複製

修改密碼

如下指令修改了photo_app中使用者moddx的密碼:

use photo_app
db.changeUserPassword("moddx", "newpwd")
登入後複製

小結

關於使用者和權限部分,常用shell操作指令就這些,希望能夠對你使用mongoDB帶來方便。

相關推薦:

[MongoDB] mongodb與php php mongodb update php連接mongodb php mongodb not authorize

#

MongoDB之旅(二)基本作業(MongoDB Javascript Shell)

#

以上是mongoDB中使用者與權限的介紹的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!