這篇文章要跟大家介紹的文章內容是關於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資料庫,大致分為兩類用戶,一種是管理員用戶,一種是普通用戶。
我們在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()
登入。
第一個參數是上面建立的管理者使用者名稱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權利的管理員帳號才能刪除用戶,所以,需要用管理員帳號登入進行操作。
刪除普通用戶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中文網其他相關文章!