mongodb基礎(chǔ)之用戶權(quán)限管理實(shí)例教程
前言
本文主要介紹了mongodb用戶權(quán)限管理的相關(guān)內(nèi)容,關(guān)于接著上次實(shí)踐的部分,下面話不多說(shuō)了,來(lái)一起看看詳細(xì)的介紹吧
啟動(dòng)mongodb并連接
./bin/mongod -f conf/mongod.conf ./bin/mongo 127.0.0.1:12345
查看默認(rèn)的數(shù)據(jù)庫(kù)情況
> show dbs admin 0.000GB local 0.000GB > use admin switched to db admin > show tables system.version
可以看到,目前數(shù)據(jù)庫(kù)里除了一些基本信息,什么都沒(méi)有
在創(chuàng)建設(shè)置用戶權(quán)限之前,先了解一下文檔知識(shí)
創(chuàng)建用戶
# demo db.createUser( { user: "reportsUser", pwd: "12345678", roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] } )
數(shù)據(jù)庫(kù)內(nèi)建角色
數(shù)據(jù)庫(kù)用戶角色
- read (讀取指定數(shù)據(jù)庫(kù))
- readWrite (讀寫指定數(shù)據(jù)庫(kù))
數(shù)據(jù)庫(kù)管理角色
- dbAdmin (數(shù)據(jù)庫(kù)管理員)
- dbOwner (數(shù)據(jù)庫(kù)所有者,合并了 readWrite, dbAdmin and userAdmin roles.)
- userAdmin (用戶管理員,可以找指定數(shù)據(jù)庫(kù)里創(chuàng)建、刪除和管理用戶)
集群管理角色
- clusterAdmin (集群管理員)
- clusterManager (集群管理者)
- clusterMonitor (集合監(jiān)視者)
- hostManager (主機(jī)管理者)
備份恢復(fù)角色
- backup (備份)
- restore (還原)
所有數(shù)據(jù)庫(kù)角色
- readAnyDatabase (讀任何數(shù)據(jù)庫(kù))
- readWriteAnyDatabase (讀寫任何數(shù)據(jù)庫(kù))
- userAdminAnyDatabase (用戶管理任何數(shù)據(jù)庫(kù))
- dbAdminAnyDatabase (任意數(shù)據(jù)庫(kù)管理員)
超級(jí)用戶角色
- root
內(nèi)部角色
- __system
有了創(chuàng)建語(yǔ)法,和參數(shù)說(shuō)明,接下來(lái)開(kāi)始實(shí)踐.
注意,還有一點(diǎn),賬號(hào)是跟著數(shù)據(jù)庫(kù)綁定的,在那個(gè)庫(kù)里授權(quán),就在那個(gè)庫(kù)里驗(yàn)證(auth)
否則會(huì)失敗
創(chuàng)建 賬號(hào)管理授權(quán)權(quán)限 的賬號(hào)
> db.createUser( ... { ... user: 'admin', ... pwd: '123456', ... roles: [{role: 'userAdminAnyDatabase', db: 'admin'}] ... } ... ) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
然后退出數(shù)據(jù)庫(kù)
> use admin switched to db admin > db.shutdownServer()
重新啟動(dòng)mongodb,記得在配置文件mongod.conf里加上 auth = true
./bin/mongod -f conf/mongod.conf ./bin/mongo 127.0.0.1:12345 > show dbs # 沒(méi)有驗(yàn)證,沒(méi)有權(quán)限,會(huì)出錯(cuò) "errmsg" : "not authorized on admin to execute command > use admin > db.auth('admin', '123456') 1 # 返回 1 表示授權(quán)成功,0表示失敗 > show dbs #已經(jīng)授權(quán),可以查看了
創(chuàng)建 讀、讀寫權(quán)限的賬戶
> use book switched to db book > db.createUser( ... { ... user: 'zhangsan', ... pwd: 'zhangsan', ... roles: [{role: 'read', db: 'book'}] ... } ... ) Successfully added user: { "user" : "zhangsan", "roles" : [ { "role" : "read", "db" : "book" } ] } > db.createUser( ... { ... user: 'lisi', ... pwd: 'lisi', ... roles: [{role: 'readWrite', db: 'book'}] ... } ... ) Successfully added user: { "user" : "lisi", "roles" : [ { "role" : "readWrite", "db" : "book" } ] } > show users { "_id" : "book.lisi", "user" : "lisi", "db" : "book", "roles" : [ { "role" : "readWrite", "db" : "book" } ] } { "_id" : "book.zhangsan", "user" : "zhangsan", "db" : "book", "roles" : [ { "role" : "read", "db" : "book" } ] }
然后驗(yàn)證用戶權(quán)限是否正確
> db.book.insert({book: '小人書(shū)'}) # 沒(méi)驗(yàn)證,會(huì)出錯(cuò) WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on book to execute command { insert: \"book\", docum ents: [ { _id: ObjectId('5959b56edcc047dfe5c9b336'), book: \"小人書(shū)\" } ], ordered: true }" } }) > db.auth('lisi', 'lisi') 1 > db.book.insert({book: '小人書(shū)'}) WriteResult({ "nInserted" : 1 }) > db.auth('zhangsan', 'zhangsan') # 用戶切到 zhangsan 1 > db.book.find() # 可以查看 { "_id" : ObjectId("5959b59fdcc047dfe5c9b337"), "book" : "小人書(shū)" } > db.book.insert({book: '擇天記'}) # 沒(méi)有write權(quán)限,會(huì)失敗 WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on book to execute command { insert: \"book\", docum ents: [ { _id: ObjectId('5959b650dcc047dfe5c9b338'), book: \"擇天記\" } ], ordered: true }" } })
創(chuàng)建 root 超級(jí)權(quán)限賬號(hào)
這個(gè)超級(jí)權(quán)限包括 授權(quán) 和 操控?cái)?shù)據(jù)庫(kù)集合數(shù)據(jù),比較簡(jiǎn)單,只需要把role設(shè)置成 root
> use admin switched to db admin > db.auth('admin', '123456') 1 > db.createUser( ... { ... user: 'dongsheng', ... pwd: '123456', ... roles: [{role: 'root', db: 'admin'}] ... } ... ) Successfully added user: { "user" : "dongsheng", "roles" : [ { "role" : "root", "db" : "admin" } ] } > db.auth('dongsheng', '123456') 1 > use book switched to db book > db.book.insert({book: '笑傲江湖'}) WriteResult({ "nInserted" : 1 }) > db.book.find() { "_id" : ObjectId("5959b59fdcc047dfe5c9b337"), "book" : "小人書(shū)" } { "_id" : ObjectId("5959b7abdcc047dfe5c9b339"), "book" : "笑傲江湖" }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Windows下把MongoDB安裝為系統(tǒng)服務(wù)的方法
這篇文章主要介紹了Windows下把MongoDB安裝為系統(tǒng)服務(wù)的方法,本文詳細(xì)介紹了將mongoDB安裝為WinXP下系統(tǒng)服務(wù)的過(guò)程,需要的朋友可以參考下2014-10-10MongoDB Windows安裝服務(wù)方法與注意事項(xiàng)
這篇文章主要介紹了MongoDB Windows安裝服務(wù)方法與注意事項(xiàng)的相關(guān)資料,MongoDB作為一個(gè)基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù),近兩年大受追捧。數(shù)據(jù)靈活的存取方式和高效的處理使得它廣泛用于互聯(lián)網(wǎng)應(yīng)用,需要的朋友可以參考下2016-12-12MongoDB創(chuàng)建與刪除數(shù)據(jù)庫(kù)
這篇文章介紹了MongoDB創(chuàng)建與刪除數(shù)據(jù)庫(kù)的方法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-06-06mongodb使用docker搭建replicaSet集群與變更監(jiān)聽(tīng)(最新推薦)
replicaSet和cluster從部署難度相比,replicaSet要簡(jiǎn)單許多。如果所存儲(chǔ)的數(shù)據(jù)量規(guī)模不算太大的情況下,那么使用replicaSet方式部署mongodb是一個(gè)不錯(cuò)的選擇,這篇文章主要介紹了mongodb使用docker搭建replicaSet集群與變更監(jiān)聽(tīng),需要的朋友可以參考下2023-03-03Mongodb億級(jí)數(shù)據(jù)性能測(cè)試和壓測(cè)
MongoDB是一個(gè)開(kāi)源的、基于分布式文件存儲(chǔ)的NoSQL數(shù)據(jù)庫(kù)系統(tǒng),它使用文檔存儲(chǔ)方式,數(shù)據(jù)結(jié)構(gòu)由鍵值(key-value)對(duì)組成,本文給大家介紹了Mongodb億級(jí)數(shù)據(jù)性能測(cè)試和壓測(cè),需要的朋友可以參考下2024-06-06數(shù)據(jù)庫(kù)MongoDB啟動(dòng)的三種方式
MongoDB是一個(gè)流行的分布式文檔型數(shù)據(jù)庫(kù),用于存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),本文給大家總結(jié)了數(shù)據(jù)庫(kù)MongoDB啟動(dòng)的三種方式,講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下2024-07-07