語法:
db.createUser(
{
user:<name_string>, #字符串
pwd:<password_strin>, #字符串
roles:[{role:<role_name>,db:<db_name>}] #數組
}
)數組
建立用戶:ide
> db.createUser( ... { ... user:"root", ... pwd:"admin", ... roles:[{role:"root",db:"admin"}] ... } ... )
用戶驗證:函數
> db.auth("root","admin") 1
查看用戶:
測試
db.dropUser(<user_name>) #刪除某個用戶,授受字符串參數
db.dropAllUsers() #刪除當前庫的全部用戶3d
查詢全部用戶 > db.getUsers() [ { "_id" : "admin.root", "user" : "root", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }, { "_id" : "admin.sysadmin", "user" : "sysadmin", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] }, { "_id" : "admin.test", "user" : "test", "db" : "admin", "roles" : [ { "role" : "root", "db" : "admin" } ] } ]
刪除test用戶 > db.dropUser("test") true
確認test用戶是否存在 > db.getUser("test") null
刪除全部用戶 > db.dropAllUsers() 2
要修改用戶密碼,要求用戶具備changePassword或changeOwnPassword的權限,有如下兩種方式用來修改用戶密碼:
db.changeUserPassword(<user_name>,<new_password>)
db.updateUser(<user_name>,{update_object})code
db.changeUserPassword()示例:blog
admin@undefined$ db.auth("root","admin") 1
admin@undefined$ db.changeUserPassword("root","123456")
字符串
admin@undefined$ db.auth("root","admin") Error: Authentication failed. 0
admin@undefined$ db.auth("root","123456") 1
admin@undefined$ show dbs admin 0.000GB local 0.000GB test 0.000GB test1 0.000GB
能夠看到在修改root用戶的密碼後,原來的密碼驗證就失敗了,可是當前這個會話仍是能夠正常執行操做,新會話則須要用修改後的密碼進行驗證get
db.updateUser()示例:string
admin@undefined$ db.auth("root","123456") 1
admin@undefined$ db.updateUser("root",{pwd:"admin123"})
admin@undefined$ db.auth("root","admin123") 1
admin@undefined$ db.auth("root","123456") Error: Authentication failed. 0
修改用戶權限(角色):
修改用戶角色也是使用db.updateUser()函數來實現的
咱們先建立一個測試用戶readtest,它只對test庫具有讀權限:
db.createUser(
{
user:"readtest",
pwd:"123456",
roles:[{role:"read",db:"test"}]
}
)
admin@undefined$ db.auth("readtest","123456") 1
admin@undefined$ use test switched to db test
test@undefined$ show tables goods users
test@undefined$ db.goods.find() { "_id" : ObjectId("5a7c5b7e83dba596ccad3ac0"), "sn" : "fhbowhnlerio12o47", "category" : "food" }
test@undefined$ db.goods.insert({"sn":"04t68gjsoe076","category" : "beauty"}) WriteResult({ "writeError" : { "code" : 13, "errmsg" : "not authorized on test to execute command { insert: \"goods\", documents: [ { _id: ObjectId('5a8ef5aa3cdd503ad3903fcc'), sn: \"04t68gjsoe076\", category: \"beauty\" } ], ordered: true }" } })
能夠看到這個用戶能夠執行讀操做,寫操做是沒有權限的,如今咱們經過db.updateUser()來擴充它的權限,記其具備讀寫權限。admin@undefined$ db.updateUser("readtest",{"roles":[{role:"readWrite",db:"test"}]})
admin@undefined$ db.auth("readtest","123456") 1
admin@undefined$ use test switched to db test
test@undefined$ db.goods.insert({"sn":"04t68gjsoe076","category" : "beauty"}) WriteResult({ "nInserted" : 1 })
能夠看到,當咱們把readtest用戶的角色從read改爲readWrite時,它就具備了對test庫的寫權限。經過db.updateUser()咱們能夠實現用戶權限的放大和縮小