语法:
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()咱们能够实现用户权限的放大和缩小