這篇文章主要介紹了MongoDB基礎之用戶權(quán)限管理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供銅梁企業(yè)網(wǎng)站建設,專注與成都網(wǎng)站建設、成都做網(wǎng)站、H5頁面制作、小程序制作等業(yè)務。10年已為銅梁眾多企業(yè)、政府機構(gòu)等服務。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進行中。
啟動mongodb并連接
./bin/mongod -f conf/mongod.conf ./bin/mongo 127.0.0.1:12345
查看默認的數(shù)據(jù)庫情況
> show dbs admin 0.000GB local 0.000GB > use admin switched to db admin > show tables system.version
可以看到,目前數(shù)據(jù)庫里除了一些基本信息,什么都沒有
在創(chuàng)建設置用戶權(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 (主機管理者)
備份恢復角色
backup (備份)
restore (還原)
所有數(shù)據(jù)庫角色
readAnyDatabase (讀任何數(shù)據(jù)庫)
readWriteAnyDatabase (讀寫任何數(shù)據(jù)庫)
userAdminAnyDatabase (用戶管理任何數(shù)據(jù)庫)
dbAdminAnyDatabase (任意數(shù)據(jù)庫管理員)
超級用戶角色
root
內(nèi)部角色
__system
有了創(chuàng)建語法,和參數(shù)說明,接下來開始實踐.
注意,還有一點,賬號是跟著數(shù)據(jù)庫綁定的,在那個庫里授權(quá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 # 沒有驗證,沒有權(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" } ] }
然后驗證用戶權(quán)限是否正確
> db.book.insert({book: '小人書'}) # 沒驗證,會出錯 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設置成 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" : "笑傲江湖" }
感謝你能夠認真閱讀完這篇文章,希望小編分享的“mongodb基礎之用戶權(quán)限管理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創(chuàng)新互聯(lián),關注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關知識等著你來學習!