重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
這篇文章主要介紹了mongodb基礎之用戶權限管理的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
啟動mongodb并連接
./bin/mongod -f conf/mongod.conf ./bin/mongo 127.0.0.1:12345
查看默認的數據庫情況
> show dbs admin 0.000GB local 0.000GB > use admin switched to db admin > show tables system.version
可以看到,目前數據庫里除了一些基本信息,什么都沒有
在創建設置用戶權限之前,先了解一下文檔知識
創建用戶
# demo db.createUser( { user: "reportsUser", pwd: "12345678", roles: [ { role: "read", db: "reporting" }, { role: "read", db: "products" }, { role: "read", db: "sales" }, { role: "readWrite", db: "accounts" } ] } )
數據庫內建角色
數據庫用戶角色
read (讀取指定數據庫)
readWrite (讀寫指定數據庫)
數據庫管理角色
dbAdmin (數據庫管理員)
dbOwner (數據庫所有者,合并了 readWrite, dbAdmin and userAdmin roles.)
userAdmin (用戶管理員,可以找指定數據庫里創建、刪除和管理用戶)
集群管理角色
clusterAdmin (集群管理員)
clusterManager (集群管理者)
clusterMonitor (集合監視者)
hostManager (主機管理者)
備份恢復角色
backup (備份)
restore (還原)
所有數據庫角色
readAnyDatabase (讀任何數據庫)
readWriteAnyDatabase (讀寫任何數據庫)
userAdminAnyDatabase (用戶管理任何數據庫)
dbAdminAnyDatabase (任意數據庫管理員)
超級用戶角色
root
內部角色
__system
有了創建語法,和參數說明,接下來開始實踐.
注意,還有一點,賬號是跟著數據庫綁定的,在那個庫里授權,就在那個庫里驗證(auth)
否則會失敗
創建 賬號管理授權權限 的賬號
> db.createUser( ... { ... user: 'admin', ... pwd: '123456', ... roles: [{role: 'userAdminAnyDatabase', db: 'admin'}] ... } ... ) Successfully added user: { "user" : "admin", "roles" : [ { "role" : "userAdminAnyDatabase", "db" : "admin" } ] }
然后退出數據庫
> 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 # 沒有驗證,沒有權限,會出錯 "errmsg" : "not authorized on admin to execute command > use admin > db.auth('admin', '123456') 1 # 返回 1 表示授權成功,0表示失敗 > show dbs #已經授權,可以查看了
創建 讀、讀寫權限的賬戶
> 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" } ] }
然后驗證用戶權限是否正確
> 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權限,會失敗 WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on book to execute command { insert: \"book\", docum ents: [ { _id: ObjectId('5959b650dcc047dfe5c9b338'), book: \"擇天記\" } ], ordered: true }" } })
創建 root 超級權限賬號
這個超級權限包括 授權 和 操控數據庫集合數據,比較簡單,只需要把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基礎之用戶權限管理的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持創新互聯,關注創新互聯行業資訊頻道,更多相關知識等著你來學習!