這篇文章主要介紹了mongodb基礎(chǔ)之用戶權(quán)限管理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
成都創(chuàng)新互聯(lián)主營富蘊(yùn)網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件定制開發(fā),富蘊(yùn)h5小程序開發(fā)搭建,富蘊(yùn)網(wǎng)站營銷推廣歡迎富蘊(yùn)等地區(qū)企業(yè)咨詢啟動mongodb并連接
./bin/mongod -f conf/mongod.conf ./bin/mongo 127.0.0.1:12345
查看默認(rèn)的數(shù)據(jù)庫情況
> show dbs admin 0.000GB local 0.000GB > use admin switched to db admin > show tables system.version
可以看到,目前數(shù)據(jù)庫里除了一些基本信息,什么都沒有
在創(chuàng)建設(shè)置用戶權(quán)限之前,先了解一下文檔知識
創(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ù)庫內(nèi)建角色
數(shù)據(jù)庫用戶角色
read (讀取指定數(shù)據(jù)庫)
readWrite (讀寫指定數(shù)據(jù)庫)
數(shù)據(jù)庫管理角色
dbAdmin (數(shù)據(jù)庫管理員)
dbOwner (數(shù)據(jù)庫所有者,合并了 readWrite, dbAdmin and userAdmin roles.)
userAdmin (用戶管理員,可以找指定數(shù)據(jù)庫里創(chuàng)建、刪除和管理用戶)
集群管理角色
clusterAdmin (集群管理員)
clusterManager (集群管理者)
clusterMonitor (集合監(jiān)視者)
hostManager (主機(jī)管理者)
備份恢復(fù)角色
backup (備份)
restore (還原)
所有數(shù)據(jù)庫角色
readAnyDatabase (讀任何數(shù)據(jù)庫)
readWriteAnyDatabase (讀寫任何數(shù)據(jù)庫)
userAdminAnyDatabase (用戶管理任何數(shù)據(jù)庫)
dbAdminAnyDatabase (任意數(shù)據(jù)庫管理員)
超級用戶角色
root
內(nèi)部角色
__system
有了創(chuàng)建語法,和參數(shù)說明,接下來開始實(shí)踐.
注意,還有一點(diǎn),賬號是跟著數(shù)據(jù)庫綁定的,在那個庫里授權(quán),就在那個庫里驗(yàn)證(auth)
否則會失敗
創(chuàng)建 賬號管理授權(quán)權(quán)限 的賬號
> db.createUser( ... { ... user: 'admin', ... pwd: '123456', ... roles: [{role: 'userAdminAnyDatabase', db: 'admin'}] ... } ... ) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
然后退出數(shù)據(jù)庫
> use admin switched to db admin > db.shutdownServer()
重新啟動mongodb,記得在配置文件mongod.conf里加上 auth = true
./bin/mongod -f conf/mongod.conf ./bin/mongo 127.0.0.1:12345 > show dbs # 沒有驗(yàn)證,沒有權(quán)限,會出錯 "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: '小人書'}) # 沒驗(yàn)證,會出錯 WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on book to execute command { insert: \"book\", docum ents: [ { _id: ObjectId('5959b56edcc047dfe5c9b336'), book: \"小人書\" } ], ordered: true }" } }) > db.auth('lisi', 'lisi') 1 > db.book.insert({book: '小人書'}) WriteResult({ "nInserted" : 1 }) > db.auth('zhangsan', 'zhangsan') # 用戶切到 zhangsan 1 > db.book.find() # 可以查看 { "_id" : ObjectId("5959b59fdcc047dfe5c9b337"), "book" : "小人書" } > db.book.insert({book: '擇天記'}) # 沒有write權(quán)限,會失敗 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 超級權(quán)限賬號
這個超級權(quán)限包括 授權(quán) 和 操控數(shù)據(jù)庫集合數(shù)據(jù),比較簡單,只需要把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" : "小人書" } { "_id" : ObjectId("5959b7abdcc047dfe5c9b339"), "book" : "笑傲江湖" }
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“mongodb基礎(chǔ)之用戶權(quán)限管理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識等著你來學(xué)習(xí)!
名稱欄目:mongodb基礎(chǔ)之用戶權(quán)限管理的示例分析-創(chuàng)新互聯(lián)
鏈接URL:http://m.rwnh.cn/article36/copgsg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、手機(jī)網(wǎng)站建設(shè)、虛擬主機(jī)、網(wǎng)站制作、云服務(wù)器、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)