對於數據庫而言,用戶和權限是很是重要的一部分,由於這涉及到安全,那麼mongoDB的用戶和權限是怎麼樣的呢?html
本文所用的mongoDB版本是3.6,操做系統是windows。mongodb
限於篇幅,本文不會介紹數據庫從下載到安裝的過程,關於安裝教程,網上有大量教程,你能夠按照這些教程把它裝好跑起來。本文將重點介紹mongoDB的用戶和權限
這一部分。shell
對於mongoDB,分爲服務端和客戶端。
在windows環境的安裝目錄下,直接雙擊打開mongod.exe,便可開啓mongoDB服務。
當服務開啓後,即可以雙擊mongo.exe打開客戶端來鏈接到mongoDB服務。數據庫
mongoDB安裝後,若是直接用mongod.exe開啓服務,默認是沒有開啓受權模式的
,若是你的mongoDB沒有開啓受權模式,那麼任何人都不須要用戶名和密碼也能夠登陸到mongoDB服務端,對你的數據庫隨心所欲,甚至直接刪庫跑路
。因此,在產品環境中,請確保必定記得開啓受權模式。windows
那麼,怎麼開啓受權模式呢?
打開cmd,進入到安裝目錄的bin目錄下,執行以下命令:安全
mongod --auth --port 27017 --dbpath /data/db
開啓了受權模式後,打開mongo.exe,在admin數據庫下,執行show dbs
,這時,數據庫會報錯,提醒沒有受權。以下:
app
mongoDB數據庫,大體分爲兩類用戶,一種是管理員用戶,一種是普通用戶。spa
咱們在admin數據庫中建立一個管理員用戶(userAdmin or userAdminAnyDatabase role),管理員用戶能夠管理普通用戶。
首先,以非受權模式
開啓mongoDB服務。操作系統
mongod --port 27017 --dbpath /data/db
而後進入admin數據庫,執行以下命令:code
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()
登陸。
第一個參數是上面建立的管理員用戶名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()
查看全局全部帳戶,只有管理員才能夠查看,而查看當前庫中的賬號,普通用戶和管理員用戶均可以查看,查看當前庫下的賬號命令以下:
show users
必須擁有dropUser權利的管理員賬號才能刪除用戶,因此,須要用管理員帳戶登陸進行操做。
刪除myblog數據庫中普通用戶moddx的命令以下:
use myblog 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帶來方便。若是你須要更詳細的的介紹,請參考官方文檔:mongo shell methods